home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / UTILITY / INTER29B.ARJ / INTERRUP.E < prev    next >
Text File  |  1992-02-09  |  251KB  |  6,841 lines

  1. Interrupt List, part 5 of 6
  2. This compilation is Copyright (c) 1989,1990,1991,1992 Ralf Brown
  3. ----------2F8000-----------------------------
  4. INT 2F - Multiplex - EASY-NET - INSTALLATION CHECK
  5.     AX = 8000h
  6. Return: AL = 00h not installed
  7.          FFh installed
  8. Note:    EASY-NET is a shareware two-machine serial-port network
  9. ----------2F8000-----------------------------
  10. INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
  11.     AX = 8000h
  12. Return: AL = FFh if installed
  13.         BX = CS of resident code
  14.         CX = ??? (03FCh)
  15. Note:    TurboNET is a NetBIOS-based file redirector and server; a demonstration
  16.       version may be downloaded from Nanosoft's BBS
  17. SeeAlso: AX=8100h
  18. ----------2F8000DX0000-----------------------
  19. INT 2F - FaxBIOS interface - INSTALLATION CHECK
  20.     AX = 8000h
  21.     DX = 0000h
  22.     DI = 0000h
  23. Return: AL = FFh if installed
  24.     DX:DI -> signature "FaxBiosjpc"
  25. Note:    FaxBIOS may use any multiplex number from 80h through FFh; to determine
  26.       whether it is installed, it is necessary to poll all multiplex
  27.       numbers for one which returns the above signature
  28. SeeAlso: AH=2Ah,AX=80FBh
  29. ----------2F8001-----------------------------
  30. INT 2F - Nanosoft, Inc. TurboNET server - ???
  31.     AX = 8001h
  32.     DS:SI -> 16-byte buffer for ???
  33. Return: AH = status
  34.         00h successful
  35.         01h error
  36. Note:    makes NetBIOS calls
  37. ----------2F80FB-----------------------------
  38. INT 2F - FaxBIOS interface - COMMAND SUBMISSION
  39.     AX = 80FBh
  40.     BX = function number (see below)
  41.     DX:DI -> command buffer (see below)
  42. Return: AL = FFh if submitted OK
  43.     CX = result code (see below)
  44. Note:    FaxBIOS may use any multiplex number from 80h through FFh
  45. SeeAlso: AX=8000h"FaxBIOS"
  46.  
  47. Values for function number:
  48.  0001h    SYS_LOGIN
  49.  0002h    SYS_LOGOUT
  50.  0003h    SYS_GET_FAXAPP_INFO
  51.  0004h    STAT_IO_GET
  52.  0005h    STAT_FAXBIOS_GET
  53.  0006h    PDIR_OPEN
  54.  0007h    PDIR_CLOSE
  55.  0008h    PDIR_READ_PERSON
  56.  0009h    PDIR_PARTIAL_READ
  57.  000Ah    PDIR_READ_GROUP
  58.  000Bh    PDIR_READ_MEMBER_LIST
  59.  000Ch    PDIR_WRITE_PERSON
  60.  000Dh    PDIR_WRITE_GROUP
  61.  000Eh    PDIR_DELETE_PERSON
  62.  000Fh    PDIR_DELETE_GROUP
  63.  0010h    PDIR_READ_GROUP_LIST
  64.  0011h    PDIR_IN_GROUP
  65.  0012h    PDIR_OUT_GROUP
  66.  0013h    SCHED_OPEN
  67.  0014h    SCHED_ADD_DEST
  68.  0015h    SCHED_ADD_FILE
  69.  0016h    SCHED_SET_PARAMS
  70.  0017h    SCHED_CANCEL
  71.  0018h    SCHED_CLOSE
  72.  0019h    SLOG_OPEN
  73.  001Ah    SLOG_CLOSE
  74.  001Bh    SLOG_SHORT_ENV_STAT
  75.  001Ch    SLOG_LONG_ENV_STAT
  76.  001Dh    SLOG_DEST_STAT
  77.  001Eh    SLOG_FILE_STAT
  78.  001Fh    SLOG_CANCEL_ENV
  79.  0020h    RLOG_OPEN
  80.  0021h    RLOG_CLOSE
  81.  0022h    RLOG_READ
  82.  0023h    GRAPH_GET_FILE_TYPE
  83.  0024h    GRAPH_EXPORT_FILE
  84.  0025h    GRAPH_GET_LAYOUT_INFO
  85.  0026h    GRAPH_CREATE_FILE
  86.  0027h    GRAPH_CLOSE_FILE
  87.  0028h    GRAPH_CREATE_PAGE
  88.  0029h    GRAPH_WRITE
  89.  002Ah    GRAPH_END_PAGE
  90.  002Bh    GRAPH_OPEN_FILE
  91.  002Ch    GRAPH_GOTO_PAGE
  92.  002Dh    GRAPH_READ
  93.  002Eh    IOCTL_GET
  94.  002Fh    IOCTL_SET
  95.  0030h    IOCTL_ANSWER_FAX
  96.  0031h    IOCTL_DIAL
  97.  
  98. Values for result code:
  99.  0000h    successful
  100.  0001h    not prepared or servicing another client (busy)
  101.  0002h    call failed due to sharing (LOCKED)
  102.  0003h    logged-in client limit reached (FULL)
  103.  0004h    transport denied (TRANSPORT_DENIED)
  104.  0005h    not implemented (NOT_IMPLEMENTED)
  105.  0006h    aborted while in progress (ABORTED)
  106.  0007h    permissions denied (PERMISSION_DENIED)
  107.  0008h    requested data is no longer valid (NO_LONGER_VALID)
  108.  0080h    unspecified system error occurred
  109.  0081h    an internal file was not found
  110.  0082h    an internal file could not be created
  111.  0083h    an internal file could not be opened
  112.  0084h    an internal file could not be closed
  113.  0085h    error occurred writing to an internal file
  114.  0086h    error occurred reading from an internal file
  115.  0087h    bad or corrupted file encountered
  116.  0088h    an access violation occurred
  117.  0089h    an internal file is empty
  118.  008Ah    insufficient memory to process request
  119.  008Bh    FaxBIOS was unable to issue a handle
  120.  008Ch    an error internal to FaxBIOS occurred
  121.  008Dh    no room on disk
  122.  0100h    unspecified error accessing client file
  123.  0101h    file not found
  124.  0102h    creation fault
  125.  0103h    open fault
  126.  0104h    close fault
  127.  0105h    write fault
  128.  0106h    read fault
  129.  0107h    file corrupted
  130.  0108h    access violation
  131.  0109h    empty file
  132.  0200h    unspecified argument error
  133.  0201h    bad function
  134.  0202h    bad option
  135.  0203h    bad structure size
  136.  0204h    bad buffer size
  137.  0205h    bad client ID
  138.  0300h    unspecified error with token
  139.  0301h    cover sheet token was invalid
  140.  0302h    logo token was invalid
  141.  0303h    signature token was invalid
  142.  0304h    font token was invalid
  143.  0305h    phone directory token was invalid
  144.  0306h    outbound route token was invalid
  145.  0307h    priority token was invalid
  146.  0308h    sort token was invalid
  147.  0309h    billing token was invalid
  148.  0400h    unspecified handle error
  149.  0401h    bad Phone Directory handle
  150.  0402h    bad scheduling handle
  151.  0403h    bad read send log handle
  152.  0404h    bad read receive log handle
  153.  0405h    bad graphics handle
  154.  0500h    data passed in structure was invalid
  155.  0501h    name field given is invalid
  156.  0502h    phone number given is invalid
  157.  0503h    poll code submitted is invalid
  158.  0504h    file type constant was invalid
  159.  0505h    BFT constant not defined or supported
  160.  0506h    resolution not defined or supported
  161.  0507h    page length not defined or supported
  162.  0508h    page width not defined or supported
  163.  0509h    date & time requested are ridiculous
  164.  050Ah    Subject text was not an ASCIIZ string
  165.  050Bh    From text was not an ASCIIZ string
  166.  050Ch    requested envelope ID was not found
  167.  050Dh    requested envelope ID is not valid
  168.  050Eh    envelope requested was not found
  169.  050Fh    destination index is out of range
  170.  0510h    file index is out of range
  171.  0511h    index into receive log is out of range
  172.  0512h    file name specified was incomplete or invalid
  173.  0513h    page selected was out of range
  174.  0514h    bit width more than byte width 
  175.  0515h    mode for open is not defined
  176.  0516h    person index is out of range
  177.  0517h    person ID is out of range
  178.  0518h    group index out of range or invalid
  179.  0519h    group ID out of range or invalid
  180.  051Ah    range of indices to read is invalid
  181.  051Bh    group name given is invalid
  182.  051Ch    field_to_use is badly specified
  183.  051Dh    predicate invalid for field specified
  184.  0600h    unspecified client procedure error
  185.  0601h    device of interest is not present
  186.  0602h    device of interest has been removed
  187.  0603h    device of interest is not responding
  188.  0604h    device of interest is disabled
  189.  0605h    could not dial because device was in use
  190.  0606h    maximum destination limit exceeded
  191.  0607h    maximum file limit exceeded
  192.  0608h    scheduling closed with no destination
  193.  0609h    scheduling closed with no files or poll
  194.  060Ah    scheduling closed with no parameters specified
  195.  060Bh    file type specified does not match file
  196.  060Ch    file type specified is not supported
  197.  060Dh    file submitted is not exportable
  198.  060Eh    file type specified is not imageable
  199.  060Fh    error converting file
  200.  0610h    envelope could not be cancelled
  201.  0611h    Phone Directory is full
  202.  0612h    record is already in the Phone Directory
  203.  0613h    selected group in Phone Directory is full
  204.  0614h    person is already in the group
  205.  0615h    person is not in the group & cannot be removed
  206.  0616h    a graphics file to be created already exists
  207.  0617h    a grphics file to be read is empty
  208.  0618h    GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
  209.  0619h    graph read or write attempted without goto or create
  210.  061Ah    graph page contains no data
  211.  061Bh    Phone Directory is already open for this client
  212.  061Ch    schedule log is already open for this client
  213.  061Dh    receive log is aready open for this client
  214.  061Eh    Phone Directory function requires write mode
  215.  0800h    denied exclusive use of the API
  216.  
  217. Format of SYS_LOGIN command buffer:
  218. Offset    Size    Description
  219.  00h    WORD    structure size
  220.  02h    WORD    function number
  221.  04h    WORD    return code
  222.  06h    WORD    client ID
  223.  08h    WORD    API Major Version
  224.  0Ah    WORD    API Minor Version
  225.  0Ch    DWORD    reserved for manufacturer's use
  226.  10h 22 BYTEs    manufacturer's ID
  227.  26h    WORD    highest possible device number
  228.  28h    WORD    maximum destinations per envelope
  229.  2Ah    WORD    maximum files per envelope
  230.  2Ch    WORD    FaxBIOS capabilities bitmap
  231.          bit 0: transmit supported
  232.         bit 1: receive supported
  233.         bit 2: IOCTL supported
  234.         bit 3: IOCTL_DIAL supported
  235.         bit 4: IOCTL_ANSWER_FAX supported
  236.         bit 5: manual transmit supported
  237.         bit 6: optional phone services supported
  238.         bit 7: canonical phone objects
  239.         bit 8: seam with next supported
  240.  2Eh    DWORD    T.30 capabilities bitmap
  241.          bit 0:  low vertical resolution (minimum)
  242.         bit 1:  high vertical resolution
  243.         bit 2:  page width 107mm (4.21 in)
  244.         bit 3:  page width 151mm (5.91 in)
  245.         bit 4:  page width 215mm (8.46 in) (minimum)
  246.         bit 5:  page width 255mm (10.04 in)
  247.         bit 6:  page width 303mm (11.93 in)
  248.         bit 7:  unused
  249.         bit 8:  page length 297mm (11.69 in) (minimum)
  250.         bit 9:  page length 364mm (14.33 in)
  251.         bit 10: page length 279mm (11 in)
  252.         bit 11: page length unlimited
  253.         bit 12: Group 4 resolution 300x300
  254.         bit 13: Group 4 resolution 400x400
  255.         bit 14: able to respond to poll from remote
  256.         bit 15: able to poll remote
  257.         bit 16: binary file transfer supported
  258.  32h    WORD    IPC handle
  259.  34h    DWORD    amount of memory needed to load
  260.  38h    WORD    scope (00h for public, nonzero for private)
  261.  3Ah  6 BYTEs    future expansion
  262.  40h    WORD    structure size
  263.  
  264. Format of SYS_LOGOUT command buffer:
  265. Offset    Size    Description
  266.  00h    WORD    structure size
  267.  02h    WORD    function number
  268.  04h    WORD    return code
  269.  06h    WORD    client ID
  270.  08h    DWORD    client tag (for client's internal use)
  271.  0Ch  6 BYTEs    future expansion
  272.  12h    WORD    structure size
  273.  
  274. Format of SYS_GET_FAXAPP_INFO command buffer:
  275. Offset    Size    Description
  276.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  277.  0Ch 80 BYTEs    FaxBIOS data
  278.  5Ch 80 BYTEs    default cover
  279.  ACh 80 BYTEs    default logo
  280.  FCh 80 BYTEs    default signature
  281. 14Ch 80 BYTEs    default font 10
  282. 19Ch 80 BYTEs    default font 165
  283. 1ECh 80 BYTEs    default user font
  284. 23Ch 80 BYTEs    default Pdir
  285. 28Ch 80 BYTEs    default sort
  286. 2DCh 10 BYTEs    default bill
  287. 2E6h 10 BYTEs    default route
  288. 2F0h 40 BYTEs    default cover sheet form
  289. 318h 34 BYTEs    valid dial characters
  290. 33Ah  6 BYTEs    local country code
  291. 340h  6 BYTEs    local city or area code
  292. 346h  6 BYTEs    future expansion
  293. 34Ch    WORD    structure size
  294.  
  295. Format of STAT_IO_GET command buffer:
  296. Offset    Size    Description
  297.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  298.  0Ch    WORD    device number
  299.  0Eh    WORD    current activity
  300.  10h    WORD    number of rings (if ringing)
  301.  12h    WORD    number of fascimiles transmitted
  302.  14h    WORD    number of fascimiles received
  303.  16h    WORD    status of last transmission
  304.  18h    WORD    envelope number of last transmission
  305.  1Ah    WORD    index of last destination in envelope
  306.  1Ch    WORD    status of last reception
  307.  1Eh    WORD    current page (if session in progress)
  308.  20h 80 BYTEs    current file
  309.  70h104 BYTEs    remote number
  310.  D8h 20 BYTEs    last name
  311.  ECh 20 BYTEs    first name
  312. 100h 32 BYTEs    company name
  313. 120h 32 BYTEs    notes
  314. 140h    WORD    current envelope ID (if sending)
  315. 142h    WORD    total pages in transmission (if sending)
  316. 144h  6 BYTEs    future expansion
  317. 14h    WORD    structure size
  318.  
  319. Format of STAT_FAXBIOS_GET command buffer:
  320. Offset    Size    Description
  321.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  322.  0Ch    WORD    status ID
  323.  0Eh    WORD    currenty FaxBIOS function number
  324.  10h    WORD    current Client ID being serviced
  325.  12h    WORD    number of things to do
  326.  14h    WORD    number of them done
  327.  16h    WORD    number of pages to do (if any)
  328.  18h    WORD    number of them done
  329.  1Ah    WORD    number of files to do
  330.  1Ch    WORD    number of them done
  331.  1Eh 80 BYTEs    current File
  332.  6Eh    WORD    0 if all devices are idle
  333.  70h    WORD    number of fascimiles transmitted
  334.  72h    WORD    number of fascimiles received
  335.  74h    WORD    status of last transmission in system
  336.  76h    WORD    envelope ID of last transmission
  337.  78h    WORD    index of last destination in envelope
  338.  7Ah    WORD    status of last reception in system
  339.  7Ch    DWORD    time of next transmission
  340.  80h  6 BYTEs    future expansion
  341.  86h    WORD    structure size
  342.  
  343. Format of PDIR_OPEN command buffer:
  344. Offset    Size    Description
  345.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  346.  0Ch 80 BYTEs    Phone Directory token
  347.  5Ch 80 BYTEs    sort order token
  348.  ACh    WORD    open Mode (0 = read, 1 = write)
  349.  AEh    WORD    Phone Directory handle
  350.  B0h    WORD    number of people
  351.  B2h    WORD    number of groups
  352.  B4h    WORD    bitmap of fields supported by partial read
  353.  B6h  6 BYTEs    future expansion
  354.  BCh    WORD    structure size
  355.  
  356. Format of PDIR_CLOSE command buffer:
  357. Offset    Size    Description
  358.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  359.  0Ch    WORD    Phone Directory handle
  360.  0Eh  6 BYTEs    future expansion
  361.  14h    WORD    structure size
  362.  
  363. Format of PDIR_READ_PERSON command buffer:
  364. Offset    Size    Description
  365.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  366.  0Ch    WORD    Phone Directory handle
  367.  0Eh    WORD    retrieve by index
  368.  10h    WORD    person ID or index
  369.  12h    WORD    how many groups person is in
  370.  14h    WORD    person ID
  371.  16h 20 BYTEs    last name
  372.  2Ah 20 BYTEs    first name
  373.  3Eh 32 BYTEs    company
  374.  5Eh 32 BYTEs    notes
  375.  7Eh  6 BYTEs    FAX country code
  376.  84h  6 BYTEs    FAX city/area code
  377.  8Ah 14 BYTEs    FAX local number
  378.  98h 14 BYTEs    FAX extension
  379.  A6h 24 BYTEs    reserved
  380.  BEh  6 BYTEs    voice country code
  381.  C4h  6 BYTEs    voice city/area code
  382.  CAh 14 BYTEs    voice local number
  383.  D8h 14 BYTEs    voice extension
  384.  E6h 24 BYTEs    reserved
  385.  FEh 10 BYTEs    outbound routing information
  386. 108h 10 BYTEs    billing information, credit card etc
  387. 112h    DWORD    remote FAX capabilities
  388. 116h 21 BYTEs    T.30 poll code of FAX number
  389. 12Bh 15 BYTEs    reserved
  390. 13Ah  6 BYTEs    future expansion
  391. 140h    WORD    structure size
  392.  
  393. Format of SCHED_OPEN, SCHED_CANCEL command buffer:
  394. Offset    Size    Description
  395.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  396.  0Ch    WORD    scheduler handle
  397.  0Eh  6 BYTEs    future expansion
  398.  14h    WORD    structure size
  399.  
  400. Format of SCHED_ADD_DEST command buffer:
  401. Offset    Size    Description
  402.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  403.  0Ch    WORD    schedule handle
  404.  0Eh    WORD    device number if manual send wanted
  405.  10h    WORD    non-zero if poll desired
  406.  12h    WORD    person ID
  407.  14h 20 BYTEs    last name
  408.  28h 20 BYTEs    first name
  409.  3Ch 32 BYTEs    company
  410.  5Ch 32 BYTEs    notes
  411.  7Ch  6 BYTEs    FAX country code
  412.  82h  6 BYTEs    FAX city/area code
  413.  88h 14 BYTEs    FAX local number
  414.  96h 14 BYTEs    FAX extension
  415.  A4h 24 BYTEs    reserved
  416.  BCh  6 BYTEs    voice country code
  417.  C2h  6 BYTEs    voice city/area code
  418.  C8h 14 BYTEs    voice local number
  419.  D6h 14 BYTEs    voice extension
  420.  E4h 24 BYTEs    reserved
  421.  FCh 10 BYTEs    outbound routing information
  422. 106h 10 BYTEs    billing information, credit card etc
  423. 110h    DWORD    remote FAX capabilities
  424. 114h 21 BYTEs    T.30 poll code of FAX number
  425. 129h 15 BYTEs    reserved
  426. 138h  6 BYTEs    future expansion
  427. 13Eh    WORD    structure size
  428.  
  429. Format of SCHED_ADD_FILE command buffer:
  430. Offset    Size    Description
  431.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  432.  0Ch    WORD    schedule handle
  433.  0Eh    WORD    file type
  434.         0000h unidentified
  435.         0001h native file format
  436.         0002h ASCII
  437.         0003h FaxBIOS Tiff Class F
  438.  10h 80 BYTEs    file name
  439.  60h 80 BYTEs    font token
  440.  B0h    WORD    conversion options bitmap
  441.  B2h    WORD    resolution
  442.         0000h standard 98 lines per inch, 204 dpi
  443.         0001h fine 196 lines per inch, 204 dpi
  444.         0002h Group4 300 dpi
  445.         0003h Group4 400 dpi
  446.  B4h    WORD    page length
  447.         0000h 279 mm (11 in)
  448.         0001h 297 mm (11.69 in)
  449.         0002h 364 mm (14.33 in)
  450.         0003h unlimited
  451.  B6h    WORD    page width
  452.         0000h 215 mm (8.46 in)
  453.         0001h 255 mm (10.04 in)
  454.         0002h 303 mm (11.93 in)
  455.         0003h 151 mm (5.91 in)
  456.         0004h 107 mm (4.21 in)
  457.  B8h    WORD    binary file transfer specification
  458.         0000h only as FAX
  459.         0001h only as file (for non-faxable files)
  460.         0002h as file when possible else FAX
  461.  BAh    WORD    seam flag (nonzero for seam with next)
  462.  BCh    WORD    delete flag (nonzero to delete when done)
  463.  BEh  6 BYTEs    future expansion
  464.  C4h    WORD    structure size
  465.  
  466. Format of SCHED_SET_PARAMS command buffer:
  467. Offset    Size    Description
  468.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  469.  0Ch    WORD    scheduler handle
  470.  0Eh    DWORD    time to send
  471.  10h 10 BYTEs    priority token
  472.  1Ch 80 BYTEs    logo file token
  473.  6Ch 80 BYTEs    signature file token
  474.  BCh 80 BYTEs    cover page token
  475. 10Ch 40 BYTEs    Subject text
  476. 134h 40 BYTEs    From text
  477. 15Ch    WORD    user ID
  478. 15Eh  6 BYTEs    future expansion
  479. 164h    WORD    structure size
  480.  
  481. Format of SCHED_CLOSE command buffer:
  482. Offset    Size    Description
  483.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  484.  0Ch    WORD    scheduler handle
  485.  0Eh    WORD    envelope ID generated
  486.  10h  6 BYTEs    future expansion
  487.  16h    WORD    structure size
  488.  
  489. Format of SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
  490. Offset    Size    Description
  491.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  492.  0Ch    WORD    log handle
  493.  0Eh    WORD    number of entries 
  494.  10h  6 BYTEs    future expansion
  495.  16h    WORD    structure size
  496.  
  497. Format of GRAPH_GET_FILE_TYPE command buffer:
  498. Offset    Size    Description
  499.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  500.  0Ch 80 BYTEs    filename
  501.  5Ch    WORD    file type
  502.         0000h unidentified
  503.         0001h native file format
  504.         0002h ASCII
  505.         0003h FaxBIOS Tiff Class F
  506.  5Eh    WORD    bitmap of supported capabilities
  507.  60h  6 BYTEs    future expansion
  508.  66h    WORD    structure size
  509.  
  510. Format of GRAPH_CREATE_FILE command buffer:
  511. Offset    Size    Description
  512.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  513.  0Ch 80 BYTEs    filename
  514.  5Ch    WORD    graph handle
  515.  5Eh  6 BYTEs    future expansion
  516.  64h    WORD    structure size
  517.  
  518. Format of GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
  519. Offset    Size    Description
  520.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  521.  0Ch    WORD    graph handle
  522.  0Eh  6 BYTEs    future expansion
  523.  14h    WORD    structure size
  524.  
  525. Format of GRAPH_CREATE_PAGE command buffer:
  526. Offset    Size    Description
  527.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  528.  0Ch    WORD    graph handle
  529.  0Eh    WORD    resolution
  530.  10h    WORD    page width
  531.  12h  6 BYTEs    future expansion
  532.  18h    WORD    structure size
  533.  
  534. Format of GRAPH_WRITE_PAGE command buffer:
  535. Offset    Size    Description
  536.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  537.  0Ch    WORD    graph handle
  538.  0Eh    DWORD    pointer to storage for image
  539.  12h    WORD    band height in lines
  540.  14h    WORD    width of page image in bytes
  541.  16h    WORD    facsimile page width constant
  542.  18h    WORD    width of page image in bits
  543.  1Ah    WORD    number of bytes actually processed
  544.  1Ch  6 BYTEs    future expansion
  545.  22h    WORD    structure size
  546.  
  547. Format of GRAPH_OPEN_FILE command buffer:
  548. Offset    Size    Description
  549.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  550.  0Ch 80 BYTEs    filename
  551.  5Ch    WORD    file type
  552.  5Eh    WORD    graph handle
  553.  60h    WORD    number of pages
  554.  62h  6 BYTEs    future expansion
  555.  68h    WORD    structure size
  556.  
  557. Format of GRAPH_GOTO_PAGE command buffer:
  558. Offset    Size    Description
  559.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  560.  0Ch    WORD    graph handle
  561.  0Eh    WORD    page number
  562.  10h    WORD    vertical resolution
  563.  12h    WORD    page width
  564.  14h    DWORD    page length
  565.  18h  6 BYTEs    future expansion
  566.  1Eh    WORD    structure size
  567.  
  568. Format of GRAPH_READ_PAGE command buffer:
  569. Offset    Size    Description
  570.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  571.  0Ch    WORD    graph handle
  572.  0Eh    DWORD    pointer to storage for image
  573.  12h    WORD    band height in lines
  574.  14h    WORD    width of page image in bytes
  575.  16h    WORD    facsimile page width constant
  576.  18h    WORD    width of page image in bits
  577.  1Ah    WORD    number of bytes actually processed
  578.  1Ch  6 BYTEs    future expansion
  579.  22h    WORD    structure size
  580.  
  581. Format of IOCTL_ANSWER_FAX command buffer:
  582. Offset    Size    Description
  583.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  584.  0Ch    WORD    device number
  585.  0Eh  6 BYTEs    future expansion
  586.  14h    WORD    structure size
  587.  
  588. Format of IOCTL_DIAL command buffer:
  589. Offset    Size    Description
  590.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  591.  0Ch    WORD    device number
  592.  0Eh  6 BYTEs    country code
  593.  14h  6 BYTEs    city or area code
  594.  1Ah 14 BYTEs    local number
  595.  28h 14 BYTEs    extension
  596.  36h 14 BYTEs    reserved
  597.  4Eh  6 BYTEs    future expansion
  598.  54h    WORD    structure size
  599. ----------2F8100-----------------------------
  600. INT 2F - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
  601.     AX = 8100h
  602. Return: AL = FFh if installed
  603. Note:    TurboNET is a NetBIOS-based file redirector and server; a demonstration
  604.       version may be downloaded from Nanosoft's BBS
  605. SeeAlso: AX=8000h"TurboNET"
  606. ----------2F8101-----------------------------
  607. INT 2F - Nanosoft, Inc. TurboNET redirector - ???
  608.     AX = 8101h
  609. Return: AL = ???
  610.     DL = ???
  611. ----------2F8102-----------------------------
  612. INT 2F - Nanosoft, Inc. TurboNET redirector - ???
  613.     AX = 8102h
  614. Return: AL = ???
  615.     DL = ???
  616. ----------2F8103-----------------------------
  617. INT 2F - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
  618.     AX = 8103h
  619.     ES:DI -> 17-byte buffer
  620. Return: buffer filled
  621. ----------2F8104-----------------------------
  622. INT 2F - Nanosoft, Inc. TurboNET redirector - ???
  623.     AX = 8104h
  624.     BL = ???
  625.     BH = ???
  626.     CX = ???
  627.     DX = ???
  628.     DS:SI -> 16-byte buffer containing ???
  629. Return: AL = 00h ???
  630. ----------2F8105-----------------------------
  631. INT 2F - Nanosoft, Inc. TurboNET redirector - ???
  632.     AX = 8105h
  633.     CX = ??? (don't change current value if 0000h)
  634.     DX = ??? (don't change current value if 0000h)
  635. Return: AL = 00h successful
  636. ----------2F82-------------------------------
  637. INT 2F - Nanosoft, Inc. TurboNET - ???
  638.     AH = 82h
  639.     ???
  640. Return: ???
  641. Note:    called by TNR.EXE, the TurboNET redirector configuration program
  642. SeeAlso: AX=8100h
  643. ----------2F8200-----------------------------
  644. INT 2F - Multiplex - RESPLAY - SAMPLE/PLAYBACK
  645.     AX = 8200h
  646.     DX:DI -> start of sample space
  647.     CX:BX = length in bytes
  648. Return: AX = status
  649.         1000h successful
  650.         2000h not initialized (see AX=8210h)
  651.         other RESPLAY not installed
  652. Note:    RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
  653. SeeAlso: AX=8201h,AX=8210h
  654. ----------2F8201-----------------------------
  655. INT 2F - Multiplex - RESPLAY - INSTALLATION CHECK
  656.     AX = 8201h
  657. Return: AX = 7746h if installed
  658. SeeAlso: AX=8202h
  659. ----------2F8202-----------------------------
  660. INT 2F - Multiplex - RESPLAY - UNINSTALL
  661.     AX = 8202h
  662. Return:    AX = status
  663.         1000h successful
  664. SeeAlso: AX=8201h
  665. ----------2F8210-----------------------------
  666. INT 2F - Multiplex - RESPLAY - INITIALIZE
  667.     AX = 8210h
  668.     BL = sound device
  669.         00h printer port LPT1
  670.         01h printer port LPT2
  671.         02h prototype board at I/O address 0300h
  672.         03h printer port (alternative LPT1)
  673.         04h internal speaker
  674.     BH = sample rate in multiples of 250 Hz (14h to A0h)
  675.     CL = direction
  676.         00h playback
  677.         01h sample
  678. Return: AX = status
  679.         1000h successful
  680.         2000h parameter out of range
  681.         other RESPLAY not installed
  682. SeeAlso: AX=8200h
  683. ----------2F8900-----------------------------
  684. INT 2F - Multiplex - WHOA!.COM - INSTALLATION CHECK
  685.     AX = 8900h
  686. Return: AL = 00h not installed
  687.        = FFh installed
  688. Note:    WHOA!.COM is a system slow-down utility by Brad D Crandall
  689. SeeAlso: AX=8901h,AX=8902h
  690. ----------2F8901-----------------------------
  691. INT 2F - Multiplex - WHOA!.COM - UNINSTALL
  692.     AX = 8901h
  693. Return: AL = FDh successful
  694.        = FEh error
  695. Note:    WHOA!.COM is a system slow-down utility by Brad D Crandall
  696. SeeAlso: AX=8900h
  697. ----------2F8902-----------------------------
  698. INT 2F - Multiplex - WHOA!.COM - SET DELAY COUNT
  699.     AX = 8902h
  700.     BX = delay count (larger values slow system down more)
  701. Return: AL = FDh successful
  702.        = FEh error
  703. Note:    WHOA!.COM is a system slow-down utility by Brad D Crandall
  704. SeeAlso: AX=8900h
  705. ----------2F9000-----------------------------
  706. INT 2F - Multiplex - RAID - INSTALLATION CHECK
  707.     AX = 9000h
  708. Return: AL = FFh if installed
  709. Note:    RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth
  710.       that resides mostly in EMS
  711. ----------2F9001-----------------------------
  712. INT 2F - Multiplex - RAID - GET ???
  713.     AX = 9001h
  714. Return: DX:AX -> ???
  715. SeeAlso: AX=9000h
  716. ----------2F9002-----------------------------
  717. INT 2F - Multiplex - RAID - GET RESIDENT SEGMENT
  718.     AX = 9002h
  719. Return: AX = segment of resident (conventional memory) portion
  720. SeeAlso: AX=9000h
  721. ----------2F9003-----------------------------
  722. INT 2F - Multiplex - RAID - UNINSTALL
  723.     AX = 9003h
  724. Return: ???
  725. SeeAlso: AX=9000h
  726. ----------2F9004-----------------------------
  727. INT 2F - Multiplex - RAID - GET ???
  728.     AX = 9004h
  729. Return: AX = first available paragraph past end of resident portion???
  730.     CX destroyed
  731. SeeAlso: AX=9000h
  732. ----------2F92-------------------------------
  733. INT 2F - Couriers LAN E-Mail - API
  734.     AH = 92h
  735.     AL = function
  736.         00h installation check
  737.         01h uninstall
  738.         02h pop down MICRO.EXE notification window
  739.         03h ???
  740.         04h ???
  741.         05h ???
  742. Return: ???
  743. SeeAlso: AH=9Ch
  744. ----------2F93-------------------------------
  745. INT 2F - Multiplex - InnerMission v1.7+ - INSTALLATION CHECK
  746.     AH = 93h
  747.     BX = CX = AX
  748. Return: AL = FFh if installed and BX=CX=AX on entry
  749.         BX = segment of resident code
  750.        = 01h if installed but BX or CX differ from AX
  751. Note:    InnerMission is a shareware graphical screen blanker by Kevin Stokes
  752. ----------2F9C-------------------------------
  753. INT 2F - Couriers LAN E-Mail OPERATOR.EXE - API
  754.     AH = 9Ch
  755.     AL = subfunction
  756.         01h uninstall
  757. Return: ???
  758. SeeAlso: AH=92h
  759. ----------2FA1-------------------------------
  760. INT 2F - Multiplex - Ergo DOS extenders - INSTALLATION CHECK
  761.     AH = A1h
  762.     AL = which
  763.         FEh OS/286,OS/386
  764.         FFh HummingBoard DOS extender
  765.     BX = 0081h
  766.     ES:DI -> 16-byte buffer
  767. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  768. SeeAlso: AX=ED00h,AX=FBA1h,INT 15/AX=BF02h
  769. ----------2FA189-----------------------------
  770. INT 2F - Multiplex - Biologic HRAMDEV.SYS - API
  771.     AX = A189h
  772.     BX = subfunction
  773.         0000h set ???
  774.         0001h remove ???
  775.         0002h get status ???
  776.         0003h enable ???
  777.         0004h disable ???
  778.         0005h set ??? flag
  779.         0006h clear ??? flag
  780.         0007h set ??? flag
  781.         0008h clear ??? flag
  782.         0009h set ???
  783.     ES:DI -> function-specific arguments
  784.         if func 0000h: 20-byte buffer containing ???
  785.         if func 0001h: 20-byte buffer for returned ???
  786.         if func 0002h: 16-byte buffer for returned ???
  787.         if func 0009h: WORD containing ???
  788. Return: BX = A189h if installed
  789.     AH = status
  790.         00h successful
  791.         FFh failed or invalid function number
  792. Notes:    HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
  793.       provides improved high memory access under MSDOS 5.0
  794.     functions 00h and 01h use a stack of four entries; function 01h always
  795.       removes the values stored with the most recent function 00h call
  796.       which has not yet been matched with a function 01h call.
  797. ----------2FAA00-----------------------------
  798. INT 2F - Multiplex - VIDCLOCK.COM - INSTALLATION CHECK
  799.     AX = AA00h
  800. Return: AL = 00h not installed
  801.          FFh installed
  802. Note:    VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
  803. ----------2FAC00-----------------------------
  804. INT 2F - Multiplex - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
  805.     AX = AC00h
  806. Return: AX = FFFFh
  807.     ES:DI -> ??? (graphics data?)
  808. Note:    this installation check was moved here to avoid the conflict with the
  809.       CD-ROM extensions that occurred in DOS 4.00
  810. SeeAlso: AX=1500h"GRAPHICS"
  811. ----------2FAD00-----------------------------
  812. INT 2F - Multiplex - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
  813.     AX = AD00h
  814. Return: AL = FFh if installed
  815.         BX = ??? (0100h in MS-DOS 3.30, PCDOS 4.01)
  816. Note:    DOS 5.0 DISPLAY.SYS chains to previous handler if AL is not one of the
  817.       subfunctions listed here
  818. ----------2FAD01-----------------------------
  819. INT 2F - Multiplex - DOS 3.3+ DISPLAY.SYS internal - SET ???
  820.     AX = AD01h
  821.     BX = ???
  822. Return: ???
  823.     CF set on error
  824. ----------2FAD02-----------------------------
  825. INT 2F - Multiplex - DOS 3.3+ DISPLAY.SYS internal - GET ???
  826.     AX = AD02h
  827. Return: BX = ??? (value set with AX=AD01h)
  828. ----------2FAD03-----------------------------
  829. INT 2F - Multiplex - DOS 3.3+ DISPLAY.SYS internal - GET ???
  830.     AX = AD03h
  831.     ES:DI -> user buffer
  832.     CX = size of buffer
  833. Return: CF set if buffer too small
  834.     CF clear if successful
  835. ----------2FAD04-----------------------------
  836. INT 2F - Multiplex - DOS 4.x only DISPLAY.SYS internal - ???
  837.     AX = AD04h
  838.     ???
  839. Return: ???
  840. ----------2FAD10-----------------------------
  841. INT 2F - Multiplex - DOS 4+ DISPLAY.SYS internal - INSTALLATION CHECK???
  842.     AX = AD10h
  843.     ???
  844. Return: AX = FFFFh
  845.     BX = ??? (0100h in PCDOS 4.01)
  846. ----------2FAD40-----------------------------
  847. INT 2F - Multiplex - DOS 4.0 - ???
  848.     AX = AD40h
  849.     DX = ???
  850.     ???
  851. Return: ???
  852. Note:    called by PCDOS 4.01 PRINT.COM
  853. ----------2FAD80-----------------------------
  854. INT 2F - Multiplex - DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
  855.     AX = AD80h
  856. Return: AL = FFh if installed
  857.         BX = version number (BH = major, BL = minor)
  858.         ES:DI -> internal data (see below)
  859. Note:    MSDOS 3.30, PCDOS 4.01, and MSDOS 5.00 all report version 1.00.
  860.  
  861. Format of KEYB internal data:
  862. Offset    Size    Description
  863.  00h    DWORD    original INT 09
  864.  04h    DWORD    original INT 2F
  865.  08h  6 BYTEs    ???
  866.  0Eh    WORD    flags
  867.  10h    BYTE    ???
  868.  11h    BYTE    ???
  869.  12h  4 BYTEs    ???
  870.  16h  2 BYTEs    country ID letters
  871.  18h    WORD    current code page
  872. ---DOS 3.3---
  873.  1Ah    WORD    pointer to first item in list of code page tables???
  874.  1Ch    WORD    pointer to ??? item in list of code page tables
  875.  1Eh  2 BYTEs    ???
  876.  20h    WORD    pointer to key translation data
  877.  22h    WORD    pointer to last item in code page table list (see below)
  878.  24h  9 BYTEs    ???
  879. ---DOS 4.01---
  880.  1Ah  2 BYTEs    ???
  881.  1Ch    WORD    pointer to first item in list of code page tables???
  882.  1Eh    WORD    pointer to ??? item in list of code page tables
  883.  20h  2 BYTEs    ???
  884.  22h    WORD    pointer to key translation data
  885.  24h    WORD    pointer to last item in code page table list (see below)
  886.  26h  9 BYTEs    ???
  887.  
  888. Format of code page table list entries:
  889. Offset    Size    Description
  890.  00h    WORD    pointer to next item, FFFFh = last
  891.  02h    WORD    code page
  892.  04h  2 BYTEs    ???
  893.  
  894. Format of translation data:
  895. Offset    Size    Description
  896.  00h    WORD    size of data in bytes, including this word
  897.  02h N-2 BYTEs    ???
  898. ----------2FAD81-----------------------------
  899. INT 2F - Multiplex - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
  900.     AX = AD81h
  901.     BX = code page (see INT 21/AX=6601h)
  902. Return: CF set on error
  903.         AX = 0001h (code page not available)
  904.     CF clear if successful
  905. Notes:    called by DISPLAY.SYS
  906.     documented for DOS 5+, but undocumented for earlier versions
  907. SeeAlso: AX=AD82h
  908. ----------2FAD82-----------------------------
  909. INT 2F - Multiplex - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
  910.     AX = AD82h
  911.     BL = new state
  912.         00h US keyboard (Control-Alt-F1)
  913.         FFh foreign keyboard (Control-Alt-F2)
  914. Return: CF set on error (BL not 00h or FFh)
  915.     CF clear if successful
  916. Note:    documented for DOS 5+, but undocumented for earlier versions
  917. SeeAlso: AX=AD81h,AX=AD83h
  918. ----------2FAD83-----------------------------
  919. INT 2F - Multiplex - DOS 5.0 KEYB.COM - GET KEYBOARD MAPPING
  920.     AX = AD83h
  921. Return: BL = current state
  922.         00h US keyboard
  923.         FFh foreign keyboard
  924. SeeAlso: AX=AD82h
  925. ----------2FAE00DXFFFF-----------------------
  926. INT 2F - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
  927.     AX = AE00h
  928.     DX = FFFFh
  929.     CH = FFh
  930.     CL = length of command line tail (4DOS v4.0)
  931.     DS:BX -> command line buffer (see below)
  932.     DS:SI -> command name buffer (see below)
  933.     DI = 0000h (4DOS v4.0)
  934. Return: AL = FFh if this command is a TSR extension to COMMAND.COM
  935.     AL = 00h if the command should be executed as usual
  936. Notes:    This call provides a mechanism for TSRs to install permanent
  937.       extensions to the command repertoire of COMMAND.COM.    It appears
  938.       that COMMAND.COM makes this call before executing the current
  939.       command line, and does not execute it itself if the return is FFh.
  940.     APPEND hooks this call, to allow subsequent APPEND commands to
  941.       execute without re-running APPEND
  942.  
  943. Format of command line buffer:
  944. Offset    Size    Description
  945.  00h    BYTE    max length of command line, as in INT 21/AH=0Ah
  946.  01h    BYTE    count of bytes to follow, excluding terminating 0Dh
  947.       N BYTEs    command line text, terminated by 0Dh
  948.  
  949. Format of command name buffer:
  950. Offset    Size    Description
  951.  00h    BYTE    length of command name
  952.  01h  N BYTEs    uppercased command name (blank-padded to 11 chars by 4DOS v4)
  953. ----------2FAE01DXFFFF-----------------------
  954. INT 2F - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
  955.     AX = AE01h
  956.     DX = FFFFh
  957.     CH = 00h
  958.     CL = length of command name (4DOS v4.0)
  959.     DS:SI -> command name buffer (see AX=AE00h)
  960.     DS:BX -> command line buffer (see AX=AE00h)
  961. Return: DS:SI buffer updated
  962.       if length byte is nonzero, the following bytes contain the uppercase
  963.       internal command to execute and the command line buffer contains the
  964.       command's parameters (the first DS:[SI] bytes are ignored)
  965. Notes:    this call requests execution of the command which a previous call to
  966.       AX=AE00h indicated was resident
  967.     APPEND hooks this call
  968. ----------2FB000-----------------------------
  969. INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
  970.     AX = B000h
  971. Return: AL = 00h not installed, OK to install
  972.        = 01h not installed, not OK to install
  973.        = FFh installed
  974. Notes:    called by DISPLAY.SYS
  975.     documented for DOS 5.0, but undocumented in prior versions
  976. SeeAlso: AX=B001h
  977. ----------2FB001-----------------------------
  978. INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
  979.     AX = B001h
  980.     DS:BX -> DWORD buffer for address of 8x8 font table
  981. Return: buffer filled
  982.     AL = FFh
  983. Note:    PCDOS 3.30/4.01 set the font table offset to 0130h, MSDOS 3.30 to 0030h
  984. SeeAlso: AX=B000h
  985. ----------2FB400-----------------------------
  986. INT 2F - Multiplex - IBM PC3270 EMUL PROG v3 - INSTALLATION CHECK
  987.     AX = B400h
  988. Return: AL = FFh if installed
  989. ----------2FB401-----------------------------
  990. INT 2F - Multiplex - IBM PC3270 EMUL PROG v3 - GET HOST BUFFER ADDRESS
  991.     AX = B401h
  992. Return: ES -> host screen buffer (PC ASCII format)
  993.     ES unchanged if communications not started
  994. ----------2FB402-----------------------------
  995. INT 2F - Multiplex - IBM PC3270 EMUL PROG v3 - ???
  996.     AX = B402h
  997.     BX = ???
  998. Return: ???
  999. ----------2FB403-----------------------------
  1000. INT 2F - Multiplex - IBM PC3270 EMUL PROG v3 - ???
  1001.     AX = B403h
  1002.     ???
  1003. Return: ???
  1004. ----------2FB404-----------------------------
  1005. INT 2F - Multiplex - IBM PC3270 EMUL PROG v3 - ???
  1006.     AX = B404h
  1007.     ???
  1008. Return: ???
  1009. ----------2FB405-----------------------------
  1010. INT 2F - Multiplex - IBM PC3270 EMUL PROG v3 - ???
  1011.     AX = B405h
  1012.     ???
  1013. Return: ???
  1014. ----------2FB700-----------------------------
  1015. INT 2F - Multiplex - APPEND - INSTALLATION CHECK
  1016.     AX = B700h
  1017. Return: AL = status
  1018.         00h not installed
  1019.         FFh installed
  1020. Note:    MSDOS 3.30 APPEND refuses to install itself when run inside TopView or
  1021.       a TopView-compatible environment
  1022. ----------2FB701-----------------------------
  1023. INT 2F - Multiplex - APPEND - ???
  1024.     AX = B701h
  1025.     ???
  1026. Return: ???
  1027. Note:    MSDOS 3.30 APPEND displays "Incorrect APPEND Version" and aborts caller
  1028. ----------2FB702-----------------------------
  1029. INT 2F - Multiplex - APPEND - VERSION CHECK
  1030.     AX = B702h
  1031. Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
  1032.     AL = major version number
  1033.     AH = minor version number, otherwise
  1034. SeeAlso: AX=B710h
  1035. ----------2FB703-----------------------------
  1036. INT 2F - Multiplex - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
  1037.     AX = B703h
  1038.     ES:DI -> INT 21 handler APPEND should chain to
  1039. Return: ES:DI -> APPEND's INT 21 handler
  1040. Note:    each invocation of this function toggles a flag which APPEND uses to
  1041.       determine whether to chain to the user handler or the original
  1042.       INT 21
  1043. ----------2FB704-----------------------------
  1044. INT 2F - Multiplex - DOS 3.3+ APPEND - GET APPEND PATH
  1045.     AX = B704h
  1046. Return: ES:DI -> active APPEND path (128 bytes max)
  1047. ----------2FB706-----------------------------
  1048. INT 2F - Multiplex - DOS 4+ APPEND - GET APPEND FUNCTION STATE
  1049.     AX = B706h
  1050. Return: BX = APPEND state
  1051.         bit 0: set if APPEND enabled
  1052.         bits 1-11 reserved
  1053.         bit 12: (DOS 5.0) set if APPEND applies directory search even if a
  1054.             drive has been specified
  1055.         bit 13: set if /PATH flag active
  1056.         bit 14: set if /E flag active (environment var APPEND exists)
  1057.         bit 15: set if /X flag active
  1058. ----------2FB707-----------------------------
  1059. INT 2F - Multiplex - DOS 4+ APPEND - SET APPEND FUNCTION STATE
  1060.     AX = B707h
  1061.     BX = APPEND state bits (see AX=B706h)
  1062. ----------2FB710-----------------------------
  1063. INT 2F - Multiplex - DOS 3.3+ APPEND - GET VERSION INFO
  1064.     AX = B710h
  1065. Return: AX = current APPEND state (see AX=B706h)
  1066.     BX = ??? (0000h in MSDOS 3.30 and 5.00)
  1067.     CX = ??? (0000h in MSDOS 3.30 and 5.00)
  1068.     DL = major version
  1069.     DH = minor version
  1070. SeeAlso: AX=B702h
  1071. ----------2FB711-----------------------------
  1072. INT 2F - Multiplex - DOS 4+ APPEND - SET RETURN FOUND NAME STATE
  1073.     AX = B711h
  1074. Note:    if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
  1075.     6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename is
  1076.     written over top of the filename passed to the INT 21h call.  The
  1077.     application must provide a sufficiently large buffer.  This state is
  1078.     reset after the next INT 21h call processed by APPEND.
  1079. BUG:    DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
  1080.       INT 21/AH=6Ch
  1081. SeeAlso: INT 21/AH=4Eh
  1082. ----------2FB800-----------------------------
  1083. INT 2F - Multiplex - network - INSTALLATION CHECK
  1084.     AX = B800h
  1085. Return: AL = status
  1086.         00h        not installed
  1087.         nonzero installed
  1088.           BX = installed component flags (test in this order!)
  1089.            bit 6   server
  1090.            bit 2   messenger
  1091.            bit 7   receiver
  1092.            bit 3   redirector
  1093. ----------2FB803-----------------------------
  1094. INT 2F - Multiplex - network - GET NETWORK EVENT POST HANDLER
  1095.     AX = B803h
  1096. Return: ES:BX -> event post handler (see AX=B804h)
  1097. SeeAlso: AX=B804h,AX=B903h
  1098. ----------2FB804-----------------------------
  1099. INT 2F - Multiplex - network - SET NETWORK EVENT POST HANDLER
  1100.     AX = B804h
  1101.     ES:BX -> new event post handler
  1102. Notes:    used in conjunction with AX=B803h to hook into the network event post
  1103.       routine
  1104.     The specified handler is called on any network event.  Two events are
  1105.       defined: message received and critical network error.
  1106. SeeAlso: AX=B803h,AX=B904h
  1107.  
  1108. Values post routine is called with:
  1109.     AX = 0000h single block message
  1110.         DS:SI -> ASCIZ originator name
  1111.         DS:DI -> ASCIZ destination name
  1112.         ES:BX -> text header (see below)
  1113.     AX = 0001h start multiple message block
  1114.         CX = block group ID
  1115.         DS:SI -> ASCIZ originator name
  1116.         DS:DI -> ASCIZ destination name
  1117.     AX = 0002h multiple block text
  1118.         CX = block group ID
  1119.         ES:BX -> text header (see below)
  1120.     AX = 0003h end multiple block message
  1121.         CX = block group ID
  1122.     AX = 0004h message aborted due to error
  1123.         CX = block group ID
  1124.     AX = 0101h server received badly formatted network request
  1125.         Return: AX = FFFFh (PC LAN will process error)
  1126.     AX = 0102h unexpected network error
  1127.         ES:BX -> NCB (see INT 5C)
  1128.     AX = 0103h server received INT 24 error
  1129.         other registers as for INT 24, except AH is in BH
  1130.         Return: as below, but only 0000h and FFFFh allowed
  1131. Return:    AX = response code
  1132.         0000h user post routine processed message
  1133.         0001h PC LAN will process message, but message window not displayed
  1134.         FFFFh PC LAN will process message
  1135.     
  1136. Format of text header:
  1137. Offset    Size    Description
  1138.  00h    WORD    length of text (maximum 512 bytes)
  1139.  02h  N BYTEs    text of message
  1140. Note:    all CRLF sequences in message text are replaced by 14h
  1141. ----------2FB807-----------------------------
  1142. INT 2F - Multiplex - Network - GET NetBIOS NAME NUMBER OF MACHINE NAME
  1143.     AX = B807h
  1144. Return: CH = NetBIOS name number of the machine name
  1145. SeeAlso: INT 21/AX=5E00h
  1146. ----------2FB808-----------------------------
  1147. INT 2F - Multiplex - Network - ???
  1148.     AX = B808h
  1149.     ???
  1150. Return: ???
  1151. ----------2FB809-----------------------------
  1152. INT 2F - Multiplex - LANtastic Network - VERSION CHECK
  1153.     AX = B809h
  1154. Return: AH = major version
  1155.     AL = minor version
  1156. ----------2FB900-----------------------------
  1157. INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
  1158.     AX = B900h
  1159. Return: AL = 00h if not installed
  1160.          FFh if installed
  1161. ----------2FB901-----------------------------
  1162. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
  1163.     AX = B901h
  1164. Return: AL = ???
  1165.     ES:BX -> RECEIVER.COM INT 2F handler
  1166. Note:    allows more efficient execution by letting the caller bypass any other
  1167.       INT 2F handlers which have been added since RECEIVER.COM was
  1168.       installed
  1169. ----------2FB903-----------------------------
  1170. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
  1171.     AX = B903h
  1172. Return: ES:BX -> POST handler
  1173. SeeAlso: AX=B803h,AX=B904h
  1174. ----------2FB904-----------------------------
  1175. INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
  1176.     AX = B904h
  1177.     ES:BX -> new POST handler
  1178. SeeAlso: AX=B804h,AX=B903h
  1179. ----------2FB905-----------------------------
  1180. INT 2F - PC Network RECEIVER.COM - GET FILENAME
  1181.     AX = B905h
  1182.     DS:BX -> 128-byte buffer for filename 1
  1183.     DS:DX -> 128-byte buffer for filename 2
  1184. Return: buffers filled from RECEIVER.COM internal buffers
  1185. Note:    use of filenames is unknown, but one appears to be for storing messages
  1186. SeeAlso: AX=B906h
  1187. ----------2FB906-----------------------------
  1188. INT 2F - PC Network RECEIVER.COM - SET FILENAME
  1189.     AX = B906h
  1190.     DS:BX -> 128-byte buffer for filename 1
  1191.     DS:DX -> 128-byte buffer for filename 2
  1192. Return: RECEIVER.COM internal buffers filled from user buffers
  1193. Note:    use of filenames is unknown, but one appears to be for storing messages
  1194. SeeAlso: AX=B905h
  1195. ----------2FB908-----------------------------
  1196. INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
  1197.     AX = B908h
  1198.     ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
  1199. Note:    this call replaces the address to which RECEIVER.COM chains on an
  1200.       INT 09 without preserving the original value.     This allows a prior
  1201.       handler to unlink, but does not allow a new handler to be added
  1202.       such that RECEIVER gets the INT 09 first.
  1203. ----------2FBC00-----------------------------
  1204. INT 2F - Multiplex - Windows 3.0, DOS 5.0 EGA.SYS - INSTALLATION CHECK
  1205.     AX = BC00h
  1206. Return: AL = 00h not installed, OK to install
  1207.        = 01h not installed, not OK to install
  1208.        = FFh installed
  1209.         BX = 5456h ("TV")
  1210. Note:    AH=BCh is the default value, which may be changed by a command line
  1211.       parameter to any value between 80h and FFh
  1212. SeeAlso: AX=BC06h,INT 10/AH=FAh"EGA"
  1213. ----------2FBC06-----------------------------
  1214. INT 2F - Multiplex - MS Windows 3.0, DOS 5.0 EGA.SYS - GET VERSION INFO
  1215.     AX = BC06h
  1216. Return: BX = 5456h ("TV")
  1217.     CH = major version
  1218.     CL = minor version
  1219.     DL = revision
  1220. SeeAlso: AX=BC00h,INT 10/AH=FAh"EGA"
  1221. ----------2FBF00-----------------------------
  1222. INT 2F - Multiplex - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
  1223.     AX = BF00h
  1224. Return: AL = FFh if installed
  1225. ----------2FBF01-----------------------------
  1226. INT 2F - Multiplex - PC LAN PROGRAM REDIRIFS.EXE internal - ???
  1227.     AX = BF01h
  1228.     ???
  1229. Return: ???
  1230. ----------2FBF80-----------------------------
  1231. INT 2F - Multiplex - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
  1232.     AX = BF80h
  1233.     ES:DI -> FAR entry point to IFS handler in REDIRIFS
  1234. Return: AL = FFh if installed
  1235.         ES:DI -> internal workspace
  1236. Note:    all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
  1237. ----------2FC000-----------------------------
  1238. INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
  1239.     AX = C000h
  1240. Return: AL = FFh
  1241.     ES:BX -> call entry point
  1242.     ES:SI -> signature string "LINKSUP$"
  1243. Note:    LSL.COM may use any multiplex number between C0h and FFh; it searches
  1244.       for itself in that range, and installs using the first free multiplex
  1245.       number in the range if not already loaded.
  1246. ----------2FC900BP0000-----------------------
  1247. INT 2F - ThunderByte??? - INSTALLATION CHECK
  1248.     AX = C900h
  1249.     BP = 0000h
  1250. Return: AL = FFh if installed
  1251.         BP >= 0014h
  1252. Note:    called by TBSCANX
  1253. SeeAlso: AX=C987h,AX=CA00h
  1254. ----------2FC987-----------------------------
  1255. INT 2F - ThunderByte??? - DISINFECT FILE???
  1256.     AX = C987h
  1257.     BX:DX -> filename
  1258.     BX:CX -> virus name
  1259. Return: AX = status
  1260.         0000h successful???
  1261. Note:    called by TBSCANX
  1262. SeeAlso: AX=CA00h
  1263. ----------2FCA00BX5442-----------------------
  1264. INT 2F - TBSCANX - INSTALLATION CHECK
  1265.     AX = CA00h
  1266.     BX = 5442h ('TB')
  1267. Return:    AL = 00h not installed
  1268.        = FFh installed
  1269.         BX = 7462h ('tb') if BX was 5442h on entry
  1270. Note:    TBSCANX is a resident virus scanning module by Frans Veldman.  Programs
  1271.       may perform virus checks on themselves, other program files, or their
  1272.       data files by invoking the TBSCANX API.
  1273. SeeAlso: AX=4653h,AX=C900h
  1274. ----------2FCA01-----------------------------
  1275. INT 2F - TBSCANX - GET STATUS
  1276.     AX = CA01h
  1277. Return: AH = BCD version number (v2.2+)
  1278.        = CAh for versions before 2.2
  1279.     AL = state (00h = disabled, 01h = enabled)
  1280.     CX = number of signatures which will be searched
  1281. ---v2.0---
  1282.     BX = EMS handle, 0000h if not using EMS
  1283. ---v2.3+---
  1284.     BX = segment of swap area, 0000h if not swapped
  1285.     DX = EMS handle, FFFFh if not using EMS
  1286. SeeAlso: AX=CA02h
  1287. ----------2FCA02-----------------------------
  1288. INT 2F - TBSCANX - SET STATE
  1289.     AX = CA02h
  1290.     BL = new state (00h = disabled, 01h = enabled)
  1291. SeeAlso: AX=CA01h
  1292. ----------2FCA03-----------------------------
  1293. INT 2F - TBSCANX - SCAN BUFFER
  1294.     AX = CA03h
  1295.     CX = size of buffer
  1296.     DS:DX -> buffer containing data to scan
  1297. Return: CF clear if no virus signatures found
  1298.         BX,ES destroyed
  1299.     CF set if signature found
  1300.         ES:BX -> ASCIZ virus name (v2.3+)
  1301.         DS:DX -> ASCIZ virus name (v2.0)
  1302.     AX,CX,DX destroyed (v2.3+)
  1303.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  1304. SeeAlso: AX=CA04h
  1305. ----------2FCA04-----------------------------
  1306. INT 2F - TBSCANX - SCAN FILE
  1307.     AX = CA04h
  1308.     DS:DX -> filename
  1309. Return: CF clear if no virus signatures found
  1310.         BX,ES destroyed
  1311.     CF set if signature found
  1312.         ES:BX -> ASCIZ virus name
  1313.     AX,CX,DX destroyed
  1314. Note:    this function requires at least 4K free memory
  1315. SeeAlso: AX=CA03h
  1316. ----------2FCB00-----------------------------
  1317. INT 2F - Communicating Applications Specification - INSTALLATION CHECK
  1318.     AX = CB00h
  1319. Return: AL = 00h not installed, OK to install
  1320.          01h not installed, not OK to install
  1321.          FFh installed
  1322. Note:    AH = CBh is the default identifier, but may be reconfigured
  1323. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh
  1324. ----------2FCB01-----------------------------
  1325. INT 2F - Communicating Applications Specification - SUBMIT A TASK
  1326.     AX = CB01h
  1327.     DS:DX -> ASCIZ name of task control file
  1328. Return: AX >= 0: event handle
  1329.        < 0: error code
  1330. Note:    files needed for an event must be kept until task is complete or error
  1331. SeeAlso: AX=CB0Bh,AX=CB15h
  1332.  
  1333. Error codes (AH = class, AL = subcode, value passed back is 2's complement):
  1334.   Class 00h    --- FAX warnings
  1335.     Subcode 00h    no error
  1336.         02h    bad scanline count
  1337.         03h    page sent with errors, could not retransmit
  1338.         04h    received data lost
  1339.         05h    invalid or missing logo file
  1340.         06h    filename does not match nonstandard format (NSF) header
  1341.         07h    file size does not match NSF header
  1342.   Class 01h    --- DOS warnings (data was sent)
  1343.     Subcode 01h    invalid function
  1344.         05h    access denied
  1345.         06h    invalid handle
  1346.         others    see INT 21/AH=59h
  1347.   Class 02h    --- fatal errors (data not sent)
  1348.     Subcode    00h    multiplex handler failed
  1349.         01h    unknown command
  1350.         02h    bad event handle
  1351.         03h    FIND NEXT attempted before FIND FIRST
  1352.         04h    no more events
  1353.         07h    invalid queue type
  1354.         08h    bad control file
  1355.         09h    communication board busy
  1356.         0Ah    invalid command parameter
  1357.         0Bh    can't uninstall resident code
  1358.         0Ch    file exists
  1359.         80h    unknown task type
  1360.         81h    bad phone number
  1361.         82h    bad .PCX file header
  1362.         83h    unexpected EOF
  1363.         84h    unexpected disconnect
  1364.         85h    too many dialing retries
  1365.         86h    no file specified for send
  1366.         87h    communication board timeout
  1367.         88h    received too many pages (>1023) of data
  1368.         89h    manual connect initiated too long ago
  1369.         8Ah    hardware command set error
  1370.         8Bh    bad NonStandard Format (NSF) header file
  1371.   Class 03h    --- fatal DOS errors
  1372.     Subcode 02h    file not found
  1373.         03h    path not found
  1374.         others    see INT 21/AH=59h
  1375.   Class 04h    --- FAX errors
  1376.     Subcode 01h    remote unit not Group 3 compatible
  1377.         02h    remote unit did not send capabilities
  1378.         03h    other FAX machine incompatible
  1379.         04h    other FAX incapable of file transfers
  1380.         05h    exceeded retrain or FAX resend limit
  1381.         06h    line noise or failure to agree on bit rate
  1382.         07h    remote disconnected after receiving data
  1383.         08h    no response from remote after sending data
  1384.         09h    remote's capabilities incompatible
  1385.         0Ah    no dial tone (v1.2+)
  1386.         0Bh    invalid response from remote unit after sending data
  1387.         0Dh    phone line dead or remote unit disconnected
  1388.         0Eh    timeout while waiting for secondary dial tone (v1.2+)
  1389.         11h    invalid command from remote after receiving data
  1390.         15h    tried to receive from incompatible hardware
  1391.         5Ch    received data overflowed input buffer
  1392.         5Dh    remote unexpectedly stopped sending data
  1393.         5Eh    other FAX machine jammed (no data sent)
  1394.         5Fh    remote took too long to send fax scan line
  1395.         63h    can't get through to remote unit
  1396.         64h    user canceled event
  1397.   Class 05h    --- application-specific (v1.2+)
  1398.   ---Intel FAXPOP.EXE
  1399.     Subcode 00h    tried to send while in graphics mode
  1400.         01h    insufficient disk space
  1401.         02h    internal buffer overflow
  1402.   Class 06h    --- CAS implementation-specific (v1.2+)
  1403. ----------2FCB02-----------------------------
  1404. INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
  1405.     AX = CB02h
  1406. Return: AX >= 0: event handle of aborted event
  1407.        < 0: error code (see AX=CB01h)
  1408. Note:    termination could take up to 30 seconds
  1409. SeeAlso: AX=CB08h,AX=CB10h
  1410. ----------2FCB05-----------------------------
  1411. INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
  1412.     AX = CB05h
  1413.     CX = status of events to find
  1414.         0000h successful completion
  1415.         0001h waiting to be processed
  1416.         0002h number has been dialed
  1417.         0003h connection established, sending
  1418.         0004h connection established, receiving
  1419.         0005h event aborted
  1420.         FFFFh find any event, regardless of status
  1421.         other negative values, match error code
  1422.     DH = direction
  1423.         00h chronological order, earliest to latest
  1424.         01h reverse chronological order, latest to earliest
  1425.     DL = queue to search
  1426.         00h task queue
  1427.         01h receive queue
  1428.         02h log queue
  1429. Return: AX = 0000h successful
  1430.         BX = event handle for found event
  1431.        < 0       error code (see AX=CB01h)
  1432. SeeAlso: AX=CB06h,AX=CB07h
  1433. ----------2FCB06-----------------------------
  1434. INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
  1435.     AX = CB06h
  1436.     DL = queue to search
  1437.         00h task queue
  1438.         01h receive queue
  1439.         02h log queue
  1440. Return: AX = 0000h successful
  1441.         BX = event handle for found event
  1442.        < 0       error code (see AX=CB01h)
  1443. Note:    direction of search is same as preceding FIND FIRST call
  1444. SeeAlso: AX=CB05h
  1445. ----------2FCB07-----------------------------
  1446. INT 2F - Communicating Applications Specification - OPEN FILE
  1447.     AX = CB07h
  1448.     BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
  1449.     CX = receive file number (ignored for task queue and log queue)
  1450.         0000h  open receive control file
  1451.         N       open Nth received data file
  1452.     DL = queue
  1453.         00h task queue
  1454.         01h receive queue control file or received file, as given by CX
  1455.         02h log queue
  1456.         03h group file in task queue (v1.2+)
  1457.         04h group file in log queue (v1.2+)
  1458. Return: AX = 0000h successful
  1459.         BX = DOS file handle for requested file
  1460.        < 0       error code (see AX=CB01h)
  1461. Note:    the returned file handle has been opened in read-only mode and should
  1462.       be closed with INT 21/AH=3Eh after use
  1463. SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
  1464. ----------2FCB08-----------------------------
  1465. INT 2F - Communicating Applications Specification - DELETE FILE
  1466.     AX = CB08h
  1467.     BX = event handle
  1468.     CX = receive file number
  1469.         0000h delete ALL received files and receive control file
  1470.         N      delete Nth received file
  1471.     DL = queue
  1472.         00h delete control file in task queue and corresponding group file
  1473.         if it exists
  1474.         01h delete file in receive queue, as given by CX
  1475.         02h delete control file in log queue (individual deletions not
  1476.         recommended, to maintain integrity of log) and corresponding
  1477.         group file if it exists
  1478. Return: AX = 0000h successful
  1479.        < 0       error code (see AX=CB01h)\
  1480. SeeAlso: AX=CB02h,AX=CB09h
  1481. ----------2FCB09-----------------------------
  1482. INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
  1483.     AX = CB09h
  1484.     DL = queue
  1485.         00h delete all control files in task queue, including all group
  1486.         files
  1487.         01h delete all files in receive queue
  1488.         02h delete all control files in log queue, including all group
  1489.         files
  1490. Return: AX = 0000h successful
  1491.        < 0       error code (see AX=CB01h)
  1492. SeeAlso: AX=CB08h
  1493. ----------2FCB0A-----------------------------
  1494. INT 2F - Communicating Applications Specification - GET EVENT DATE
  1495.     AX = CB0Ah
  1496.     BX = event handle
  1497.     DL = queue
  1498.         00h task queue
  1499.         01h receive queue
  1500.         02h log queue
  1501. Return: AX = 0000h successful
  1502.         CX = year
  1503.         DH = month
  1504.         DL = day
  1505.        < 0       error code (see AX=CB01h)
  1506. SeeAlso: AX=CB0Bh,AX=CB0Ch
  1507. ----------2FCB0B-----------------------------
  1508. INT 2F - Communicating Applications Specification - SET TASK DATE
  1509.     AX = CB0Bh
  1510.     BX = event handle (task event only)
  1511.     CX = year
  1512.     DH = month
  1513.     DL = day
  1514. Return: AX = 0000h successful
  1515.        < 0       error code (see AX=CB01h)
  1516. Note:    setting a task's date and time to before the current date and time
  1517.       causes it to execute immediately
  1518. SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
  1519. ----------2FCB0C-----------------------------
  1520. INT 2F - Communicating Applications Specification - GET EVENT TIME
  1521.     AX = CB0Ch
  1522.     BX = event handle
  1523.     DL = queue
  1524.         00h task queue
  1525.         01h receive queue
  1526.         02h log queue
  1527. Return: AX = 0000h successful
  1528.         CH = hour
  1529.         CL = minute
  1530.         DH = second
  1531.         DL = 00h
  1532.        < 0       error code (see AX=CB01h)
  1533. SeeAlso: AX=CB0Ah,AX=CB0Dh
  1534. ----------2FCB0D-----------------------------
  1535. INT 2F - Communicating Applications Specification - SET TASK TIME
  1536.     AX = CB0Dh
  1537.     BX = event handle (task events only)
  1538.     CH = hour
  1539.     CL = minute
  1540.     DH = second
  1541.     DL unused
  1542. Return: AX = 0000h successful
  1543.        < 0       error code (see AX=CB01h)
  1544. Note:    setting a task's date and time to before the current date and time
  1545.       causes it to execute immediately
  1546. SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
  1547. ----------2FCB0E-----------------------------
  1548. INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
  1549.     AX = CB0Eh
  1550.     DS:DX -> 256-byte buffer
  1551. Return: AX = 0000h successful
  1552.         buffer filled
  1553.        < 0       error code (see AX=CB01h)
  1554.  
  1555. Format of external data block:
  1556. Offset    Size    Description
  1557.  00h    BYTE    CAS major version
  1558.  01h    BYTE    CAS minor version
  1559.  02h 68 BYTEs    ASCIZ path to directory containing CAS software, ends in slash
  1560.  46h 13 BYTEs    ASCIZ name of current phonebook (in CAS directory)
  1561.  53h 13 BYTEs    ASCIZ name of current logo file (in CAS directory)
  1562.  60h 32 BYTEs    ASCIZ default sender name
  1563.  80h 21 BYTEs    ASCIZ CCITT identification of fax device
  1564.  95h 107 BYTEs    reserved
  1565. ----------2FCB0F-----------------------------
  1566. INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
  1567.     AX = CB0Fh
  1568.     DL = subfunction
  1569.         00h get current autoreceive state
  1570.         01h set autoreceive state
  1571.         DH = number of rings before answer, 00h = never
  1572. Return: AX = 0000h autoreceive disabled
  1573.        = N       number of rings before answer
  1574.        < 0       error code (see AX=CB01h)
  1575. ----------2FCB10-----------------------------
  1576. INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
  1577.     AX = CB10h
  1578.     DS:DX -> 512-byte buffer
  1579. Return: AX = 0000h successful
  1580.         BX = event handle of current event or negative error code if
  1581.             no current event
  1582.         buffer filled
  1583.        < 0       error code (see AX=CB01h)
  1584. SeeAlso: AX=CB02h,AX=CB0Dh
  1585.  
  1586. Format of status area:
  1587. Offset    Size    Description
  1588.  00h    BYTE    event type
  1589.         00h send
  1590.         01h receive
  1591.         02h polled send
  1592.         03h polled receive
  1593.         04h to 7Fh reserved
  1594.         FFh serious hardware error
  1595.  01h    BYTE    transfer type
  1596.         00h 200x200 dpi, FAX mode
  1597.         01h 100x200 dpi, FAX mode
  1598.         02h file transfer mode
  1599.         03h to 7Fh reserved
  1600.  02h    WORD    event status 
  1601.         0000h completed successfully
  1602.         0001h waiting
  1603.         0002h number dialed
  1604.         0003h connected, sending
  1605.         0004h connected, receiving
  1606.         0005h aborted
  1607.         0006h to 007Fh reserved
  1608.         0080h to 7FFFh application-specific events
  1609.         8000h to FFFFh error codes
  1610.  04h    WORD    event time (packed DOS time format, see INT 21/AX=5700h)
  1611.  06h    WORD    event date (packed DOS date format, see INT 21/AX=5700h)
  1612.  08h    WORD    number of files to transfer, max 7FFFh
  1613.  0Ah    WORD    offset of file transfer record
  1614.  0Ch 47 BYTEs    ASCIZ phone number to call
  1615.  3Bh 64 BYTEs    ASCIZ application-specific tag string
  1616.  7Bh    BYTE    reserved (00h)
  1617.  7Ch    BYTE    connect time, seconds
  1618.  7Dh    BYTE    connect time, minutes
  1619.  7Eh    BYTE    connect time, hours
  1620.  7Fh    DWORD    total number of pages in all files
  1621.  83h    DWORD    pages already transmitted 
  1622.  87h    WORD    number of files already transmitted
  1623.  89h    BYTE    cover page flag
  1624.         00h don't transmit cover page
  1625.         01h transmit cover page
  1626.         02h to 7Fh reserved
  1627.  8Ah    WORD    total number of transmission errors
  1628.  8Ch 78 BYTEs    reserved (zeros)
  1629.  DAh 21 BYTEs    ASCIZ remote FAX's CCITT identification
  1630.  EFH 32 BYTEs    ASCIZ destination name
  1631. 10Fh 32 BYTEs    ASCIZ sender name
  1632. 12Fh 80 BYTEs    filename of PCX logo file (max 1780x800 pixels)
  1633. 17Fh 128 BYTEs    file transfer record for current event (see below)
  1634.  
  1635. Format of file transfer record:
  1636. Offset    Size    Description
  1637.  00h    BYTE    file type (ignored unless FAX)
  1638.         00h ASCII
  1639.         01h PCX
  1640.         02h DCX
  1641.         03h to 7Fh reserved
  1642.  01h    BYTE    text size for ASCII FAX file
  1643.         00h = 80 columns by 66 lines (11 inches)
  1644.         01h = 132 columns by 88 lines (11 inches)
  1645.         02h to 7Fh reserved
  1646.  02h    BYTE    status of file
  1647.         00h untouched
  1648.         01h opened
  1649.         02h moved
  1650.         03h deleted
  1651.         04h not yet received
  1652.         05h to 7Fh reserved
  1653.  03h    DWORD    bytes already transmitted
  1654.  07h    DWORD    file size in bytes
  1655.  0Bh    WORD    pages alread transmitted
  1656.  0Dh    WORD    number of pages in file
  1657.  0Fh 80 BYTEs    ASCIZ filename
  1658.  5Fh    BYTE    1/8 inch page length
  1659.         if page length below set to 01h through 7Fh, this value 
  1660.         specifies additional 1/8 inch increments to page length
  1661.  60h    BYTE    page length
  1662.         00h = 11 inches
  1663.         01h to 7Fh = page length is this number of inches plus value of
  1664.             1/8 inch field above
  1665.         80h to FEh reserved
  1666.         FFh = ASCII pages ending with formfeed
  1667.  61h 31 BYTEs    reserved (zeros)
  1668. ----------2FCB11-----------------------------
  1669. INT 2F - Communicating Applications Specification - GET QUEUE STATUS
  1670.     AX = CB11h
  1671.     DL = queue to get status of
  1672.         00h task queue
  1673.         01h receive queue
  1674.         02h log queue
  1675.         03h send events (v1.2+)
  1676.         04h receive events (v1.2+)
  1677. Return: AX >= 0     total number of changes made to queue, modulo 32768
  1678.         BX = number of control files currently in queue
  1679.         CX = number of received files (zero for task and log queues)
  1680.     AX < 0    error code (see AX=CB01h)
  1681. SeeAlso: AX=CB12h
  1682. ----------2FCB11DL03-------------------------
  1683. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
  1684.     AX = CB11h
  1685.     DL = 03h
  1686. Return: AX = number of successful sends since resident manager started
  1687.     BX = number of unsuccessful sends, including warnings
  1688. SeeAlso: AX=CB11h/DL=04h
  1689. ----------2FCB11DL04-------------------------
  1690. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
  1691.     AX = CB11h
  1692.     DL = 04h
  1693. Return:    AX = number of received file events since resident manager started
  1694.     BX = number of received FAX events
  1695. SeeAlso: AX=CB11h/DL=03h
  1696. ----------2FCB12-----------------------------
  1697. INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
  1698.     AX = CB12h
  1699.     DS:DX -> 128-byte status buffer
  1700. Return: AX = 0000h successful
  1701.         buffer filled with hardware-dependent status information
  1702.        < 0       error code (see AX=CB01h)
  1703. SeeAlso: AX=CB10h,AX=CB11h
  1704.  
  1705. Format of status buffer for Intel Connection CoProcessor:
  1706. Offset    Size    Description
  1707.  00h    BYTE    bit flags
  1708.         bit 7: hardware busy sending or receiving
  1709.         bit 6: last page of data
  1710.         bit 5: no data on current page
  1711.         bit 4: retransmit request for current page being transmitted
  1712.         bit 3: NSF mode active
  1713.         bits 2-0: reserved
  1714.  01h    BYTE    number of kilobytes of free buffer space
  1715.  02h    BYTE    page buffer status
  1716.         bit 7: Connection CoProcessor has documents to send
  1717.         bits 6-0: number of pages in buffer
  1718.  03h    BYTE    number of retries left for dialing number
  1719.  04h    BYTE    page number to retransmit
  1720.  05h    BYTE    communications status
  1721.         bit 7: originating call
  1722.         bit 6: FAX message to be sent
  1723.         bit 5: on line
  1724.         bit 4: ring detected and receive enabled
  1725.         bit 3: buffer dumped on receive
  1726.         bits 2-0: hardware sequence state
  1727.             000 idle
  1728.             001 dial
  1729.             010 answer
  1730.             011 transmit
  1731.             100 receive
  1732.             101 pre-message
  1733.             110 post-message
  1734.             111 disconnect
  1735.  06h    BYTE    baud rate
  1736.         bit 7: reserved
  1737.         bits 6-4: baud rate
  1738.             000 = 300 baud    (V.21 SDLC or HDLC mode)
  1739.             100 = 2400 baud (V.27 ter)
  1740.             101 = 4800 baud (V.27 ter)
  1741.             110 = 7200 baud (V.29)
  1742.             111 = 9600 baud (V.29)
  1743.         bits 3-0: reserved, should be 0110
  1744.  07h  3 BYTEs    reserved
  1745.  0Ah    BYTE    hardware status
  1746.         bit 7: modem option installed
  1747.         bit 6: Connection CoProcessor has control of DAA (not latched)
  1748.         bit 5: on line (not latched)
  1749.         bit 4: ring detected (not latched)
  1750.         bit 3: data in command buffer (not latched)
  1751.         bit 2: set if using DMA channel 1, clear if using DMA channel 3
  1752.         bit 1: line length compensation bit 1 set (not latched)
  1753.         bit 0: line length compensation bit 0 set (not latched)
  1754.  0Bh    BYTE    switch states
  1755.         bit 7: reserved
  1756.         bit 6: unused
  1757.         bit 5: spare switch open
  1758.         bit 4: FAX ADR1 switch open
  1759.         bit 3: FAX ADR0 switch open
  1760.         bit 2: alternate interrupt switch open
  1761.         bit 1: COM SEL 1 switch open
  1762.         bit 0: COM SEL 0 switch open
  1763.             Note: valid combinations of bits 0-2 are
  1764.                 000  COM2 IRQ3 IObase 2F8h
  1765.                 001  COM1 IRQ4 IObase 3F8h
  1766.                 010  COM4 IRQ3 IObase 2E8h
  1767.                 011  COM3 IRQ4 IObase 3E8h
  1768.                 110  COM4 IRQ2 IObase 2E8h
  1769.                 111  COM3 IRQ5 IObase 3E8h
  1770.  0Ch    BYTE    bit flags
  1771.         bit 7: reserved
  1772.         bit 6: auxiliary relay forced ON
  1773.         bit 5: modem select relay forced ON
  1774.         bit 4: offhook relay forced ON
  1775.         bit 3: 9600 bps enabled
  1776.         bit 2: 7200 bps enabled
  1777.         bit 1: 4800 bps enabled
  1778.         bit 0: 2400 bps enabled
  1779.  0Dh    BYTE    reserved
  1780.  0Eh    WORD    error count (only valid while busy, reset when idle)
  1781.  10h    DWORD    size of nonstandard format (NSF) file in bytes
  1782.  14h    BYTE    'A' if Connection CoProcessor board present
  1783.  15h  9 BYTEs    reserved
  1784.  1Eh 21 BYTEs    ASCIZ CCITT identification
  1785.  33h 77 BYTEs    reserved
  1786.  
  1787. Format of status buffer for Intel SatisFAXtion board:
  1788. Offset    Size    Description
  1789.  00h    BYTE    connection status flags
  1790.         bit 7: busy in T.30 CCITT fax protocol
  1791.         bit 6: data on current page/file (only used for block xfers)
  1792.         bit 5: retransmission of last page requested
  1793.         bit 4: in file transfer mode
  1794.         bit 3: data in buffer
  1795.         bit 2: data buffer dumped on receive
  1796.         bit 1: 200x100 dpi resolution instead of 200x200 dpi
  1797.         bit 0: data modem in use, FAX image modem not available
  1798.  01h    BYTE    board state
  1799.         bit 7: reserved
  1800.         bit 6: handset jack active, data and FAX modems not available
  1801.         bits 5-3: current bit rate
  1802.             000     300 bps (V.21 HDLC)
  1803.             100 2400 bps (V.27 ter)
  1804.             101 4800 bps (V.27 ter)
  1805.             110 7200 bps (V.29)
  1806.             111 9600 bps (V.29)
  1807.         bits 2-0: T.30 CCITT protocol state
  1808.             000 idle
  1809.             001 dialing
  1810.             010 answering
  1811.             011 transmitting
  1812.             100 receiving
  1813.             101 pre-message
  1814.             110 post-message
  1815.             111 disconnect
  1816.  02h    BYTE    number of KB free in buffer
  1817.  03h    BYTE    number of pages or files in buffer
  1818.  04h    BYTE    number of redials remaining on current number
  1819.  05h    BYTE    FAX page number to retransmit
  1820.  06h    BYTE    current page/file in block transfer
  1821.  07h    BYTE    number of rings received (only if auto-answer enabled)
  1822.  08h    WORD    error count
  1823.  0Ah    DWORD    length of file being transferred
  1824.  0Eh  6 BYTEs    reserved
  1825.  14h    BYTE    'B' is SatisFAXtion board present
  1826.  15h 13 BYTEs    ASCIZ transfer agent name
  1827.  22h  5 BYTEs    ASCIZ transfer agent version number
  1828.  27h 13 BYTEs    ASCIZ resident loader name
  1829.  34h  5 BYTEs    ASCIZ resident loader version number
  1830.  39h 21 BYTEs    ASCIZ remote CSID
  1831.  4Eh 13 BYTEs    ASCIZ resident manager name
  1832.  5Bh  5 BYTEs    ASCIZ resident manager version number
  1833.  60h 32 BYTEs    reserved
  1834. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  1835.       by examining the byte at offset 14h
  1836. ----------2FCB13DL00-------------------------
  1837. INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
  1838.     AX = CB13h
  1839.     DL = 00h
  1840. Return: AX = 0040h in progress
  1841.        >= 0       passed
  1842.        < 0       hardware-dependent failure code (see below)
  1843. SeeAlso: AX=CB13h/DL=01h
  1844.  
  1845. Intel Connection CoProcessor failure codes:
  1846.     bit 3: 9600 bps FAX modem module failed
  1847.     bit 2: SDLC chip failed
  1848.     bit 1: RAM failed
  1849.     bit 0: ROM checksum failed
  1850.  
  1851. Intel SatisFAXtion failure codes:
  1852.     bit 1: 2400 bps data modem failed
  1853.     bit 0: 9600 bps FAX modem failed
  1854. ----------2FCB13DL01-------------------------
  1855. INT 2F - Communicating Applications Specification - START DIAGNOSTICS
  1856.     AX = CB13h
  1857.     DL = 01h
  1858. Return: AX = 0000h successfully started
  1859.        < 0       error code (see AX=CB01h)
  1860. SeeAlso: AX=CB13h/DL=00h
  1861. ----------2FCB14-----------------------------
  1862. INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
  1863.     AX = CB14h
  1864.     BX = event handle
  1865.     CX = receive file number
  1866.          0001h first received file
  1867.          N       Nth received file
  1868.     DS:DX -> ASCIZ string specifying new name for file (must not exist)
  1869. Return: AX = 0000h successful
  1870.        < 0       error code (see AX=CB01h)
  1871. ----------2FCB15-----------------------------
  1872. INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
  1873.     AX = CB15h
  1874.     DS:DX -> variable-length data area (see below)
  1875. Return: AX >= 0    event handle
  1876.        < 0    error code (see AX=CB01h)
  1877. SeeAlso: AX=CB01h
  1878.  
  1879. Format of data area:
  1880. Offset    Size    Description
  1881.  00h    BYTE    transfer type
  1882.         00h = 200x200 dpi, fax mode
  1883.         01h = 100x200 dpi, fax mode
  1884.         02h = file transfer mode
  1885.         03h to 7Fh reserved
  1886.  01h    BYTE    text size
  1887.         00h = 80 columns
  1888.         01h = 132 columns
  1889.         02h to 7Fh reserved
  1890.  02h    WORD    time to send (DOS packed time format, see INT 21/AX=5700h)
  1891.  04h    WORD    date to send (DOS packed date format, see INT 21/AX=5700h)
  1892.  06h 32 BYTEs    ASCIZ destination name
  1893.  26h 80 BYTEs    ASCIZ name of file to send
  1894.  76h 47 BYTEs    ASCIZ phone number to dial
  1895.  A5h 64 BYTEs    ASCIZ application-specific tag string
  1896.  E5h    BYTE    reserved (00h)
  1897.  E6h    BYTE    cover page
  1898.         00h don't send cover page
  1899.         01h send cover page
  1900.         02h to 7Fh reserved
  1901.  E7h 23 BYTEs    reserved (zeros)
  1902.  FEh variable    ASCIZ string containing text of cover page (if cover page flag
  1903.         set to 01h)
  1904. ----------2FCB16BX1234-----------------------
  1905. INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
  1906.     AX = CB16h
  1907.     BX = 1234h
  1908.     CX = 5678h
  1909.     DX = 9ABCh
  1910. Return: AX = 0000h successful
  1911.        < 0       error code
  1912. SeeAlso: AX=CB00h
  1913. ----------2FCB17-----------------------------
  1914. INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
  1915.     AX = CB17h
  1916.     BX = event handle
  1917.     CL = cover page status
  1918.         00h not read
  1919.         01h read by user
  1920. Return: AX = 0000h successful
  1921.        < 0       error code
  1922. ----------2FCB80-----------------------------
  1923. INT 2F - Intel SatisFAXtion CASMGR - ???
  1924.     AX = CB80h
  1925.     ???
  1926. Return: ???
  1927. ----------2FCB81-----------------------------
  1928. INT 2F - Intel SatisFAXtion CASMGR - ???
  1929.     AX = CB81h
  1930.     ???
  1931. Return: ???
  1932. ----------2FCB82-----------------------------
  1933. INT 2F - Intel SatisFAXtion CASMGR - ???
  1934.     AX = CB82h
  1935.     ???
  1936. Return: ???
  1937. ----------2FCD00-----------------------------
  1938. INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
  1939.     AX = CD00h
  1940. Return: AL = 00h not installed, OK to install
  1941.          01h not installed, not OK to install
  1942.          FFh installed
  1943. SeeAlso: AX=CD02h"Image"
  1944. ----------2FCD00-----------------------------
  1945. INT 2F - SWELL.EXE - INSTALLATION CHECK
  1946.     AX = CD00h
  1947. Return: AX = 00FFh installed
  1948.         BH = major version
  1949.         BL = minor version
  1950. Note:    SWELL.EXE is a TSR which swaps programs to disk when they EXEC a child
  1951.       process with INT 21/AH=4Bh
  1952. ----------2FCD01-----------------------------
  1953. INT 2F - Intel Image Processing Interface - SET DEVICE NAME
  1954.     AX = CD01h
  1955.     CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
  1956. Return: AL = 00h successful
  1957.         CX:BX -> internal character device name
  1958.        = 80h error
  1959. ----------2FCD01-----------------------------
  1960. INT 2F - SWELL.EXE - SUSPEND ONCE
  1961.     AX = CD01h
  1962. Return: AX = 0000h
  1963. SeeAlso: AX=CD02h"SWELL"
  1964. ----------2FCD02-----------------------------
  1965. INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
  1966.     AX = CD02h
  1967. Return: AL = 00h/01h successful
  1968.         BH = major version number (BCD)
  1969.         BL = minor version number (BCD)
  1970.        = 80h error
  1971. Note:    if return AL = 01h, the IPI supports network redirection
  1972. SeeAlso: AX=CD00h"Image"
  1973. ----------2FCD02-----------------------------
  1974. INT 2F - SWELL.EXE - SUSPEND
  1975.     AX = CD02h
  1976. Return: AX = 0000h
  1977. SeeAlso: AX=CD03h"SWELL"
  1978. ----------2FCD03-----------------------------
  1979. INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
  1980.     AX = CD03h
  1981.     BX = scan line
  1982.     CX = requested density in dots per inch (300, 600, or 1200)
  1983. Return: AL = 00h succesful
  1984.         CX = density at which scan line was mapped
  1985.         ES:DI -> start of scan line
  1986.     AL = 80h unsuccessful
  1987.        = 81h scan line out of range
  1988.        = 82h unsupported scan line density
  1989.        = 83h out of memory
  1990. SeeAlso: AX=CD04h"Image"
  1991. ----------2FCD03-----------------------------
  1992. INT 2F - SWELL.EXE - ACTIVATE
  1993.     AX = CD03h
  1994. Return: AX = 0000h
  1995. SeeAlso: AX=CD02h"SWELL"
  1996. ----------2FCD04-----------------------------
  1997. INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
  1998.     AX = CD04h
  1999.     CX:BX -> structure (see below)
  2000. Return: AL = 00h successful
  2001.        = 80h unsuccessful
  2002.        = 81h scan line out of range
  2003.        = 82h unsupported scan line density
  2004.        = 83h out of memory
  2005.        = 84h unrecognized source
  2006.        = 85h initialization error
  2007. SeeAlso: AX=CD03h"Image"
  2008.  
  2009. Format of structure:
  2010. Offset    Size    Description
  2011.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  2012.  02h    DWORD    pointer to image data
  2013.  06h    WORD    scan line on which to place
  2014.  08h    WORD    bit offset from start of scan line at which to place
  2015.  0Ah    WORD    density of bitmap data (300, 600, or 1200 dpi)
  2016.  0Ch    WORD    width in bits of data
  2017.  0Eh    WORD    source logical page number
  2018.  10h    WORD    source handle (only if source in expanded memory)
  2019.  12h    WORD    source offset (only if source in expanded memory)
  2020. ----------2FCD04-----------------------------
  2021. INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
  2022.     AX = CD04h
  2023. Return: AX = 0000h
  2024. SeeAlso: AX=CD05h"SWELL"
  2025. ----------2FCD05-----------------------------
  2026. INT 2F - Intel Image Processing Interface - PRINT PAGE
  2027.     AX = CD05h
  2028. Return: AL = 00h successful
  2029.        = 80h unsuccessful
  2030. Note:    page image is retained, so multiple calls will print multiple copies of
  2031.       the page
  2032. SeeAlso: AX=CD06h"Image"
  2033. ----------2FCD05-----------------------------
  2034. INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
  2035.     AX = CD05h
  2036. Return: AX = 0000h
  2037. SeeAlso: AX=CD04h"SWELL"
  2038. ----------2FCD06-----------------------------
  2039. INT 2F - Intel Image Processing Interface - CLEAR PAGE
  2040.     AX = CD06h
  2041. Return: AL = 00h successful
  2042.        = 80h unsuccessful
  2043. Note:    palette is reset to default
  2044. SeeAlso: AX=CD09h"Image"
  2045. ----------2FCD06-----------------------------
  2046. INT 2F - SWELL.EXE - UNINSTALL
  2047.     AX = CD06h
  2048. Return: AX = 0000h uninstalled
  2049.        = 8002h programs still swapped, not uninstalled
  2050. ----------2FCD07-----------------------------
  2051. INT 2F - Intel Image Processing Interface - reserved
  2052.     AX = CD07h
  2053. ----------2FCD07-----------------------------
  2054. INT 2F - SWELL.EXE - GET INFO
  2055.     AX = CD07h
  2056.     ES:BX -> 32-byte buffer for info
  2057. Return: AX = 0000h successful
  2058.         ES:BX buffer filled
  2059.        = 8001h buffer wrong size
  2060.  
  2061. Format of info buffer:
  2062. Offset    Size    Description
  2063.  00h    WORD    20h  (total size of buffer)
  2064.  02h    BYTE    suspend-once mode active if nonzero
  2065.  03h    BYTE    00h active, 01h suspended
  2066.  04h    BYTE    00h quiet, 01h verbose
  2067.  05h    BYTE    "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
  2068.  06h 26 BYTEs    unused???
  2069. ----------2FCD08-----------------------------
  2070. INT 2F - Intel Image Processing Interface - SCREEN IMAGE
  2071.     AX = CD08h
  2072.     CX:BX -> structure (see below)
  2073. Return: AL = 00h successful
  2074.        = 80h unsuccessful
  2075.        = 81h scan line out of range
  2076.        = 82h unsupported scan line density
  2077.        = 83h out of memory
  2078.        = 84h unrecognized source
  2079.        = 85h initialization error
  2080. SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
  2081.  
  2082. Format of structure:
  2083. Offset    Size    Description
  2084.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  2085.  02h    DWORD    pointer to image data
  2086.  06h    WORD    horizontal position on paper of left edge (in 1200 dpi units)
  2087.  08h    WORD    vertical position on paper of top edge (in 1200 dpi units)
  2088.  0Ah    WORD    left cropping (currently must be zero)
  2089.  0Ch    WORD    top cropping (currently must be zero)
  2090.  0Eh    WORD    width (currently must be 8000h)
  2091.  10h    WORD    height (currently must be 8000h)
  2092.  12h    WORD    horizontal size of image in 1200 dpi units
  2093.  14h    WORD    vertical size of image in 1200 dpi units
  2094.  16h    WORD    aspect ratio (currently reserved)
  2095.  18h    WORD    initialization flag (if 01h, initialization is performed)
  2096.  1Ah    WORD    pixels per line of source data
  2097.  1Ch    WORD    number of scan lines in source data
  2098.  1Eh    WORD    number of scan lines in packet
  2099.  20h    WORD    bits per pixel (1,2,4,6, or 8)
  2100.  22h    WORD    pixels per byte (1,2,4, or 8)
  2101.  24h    WORD    compression type (currently only 00h [uncompressed] supported)
  2102.  26h    WORD    source page number (if in expanded memory)
  2103.  28h    WORD    source handle (if in expanded memory)
  2104.  2Ah    WORD    source offset (if in expanded memory)
  2105. ----------2FCD08-----------------------------
  2106. INT 2F - SWELL.EXE - UNUSED
  2107.     AX = CD08h
  2108. Return: AX = FFFFh (error)
  2109. ----------2FCD09-----------------------------
  2110. INT 2F - Intel Image Processing Interface - LOAD SCREEN
  2111.     AX = CD09h
  2112.     CX:BX -> structure (see below)
  2113. Return: AL = 00h successful
  2114.        = 80h unsuccessful
  2115. SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
  2116.  
  2117. Format of structure:
  2118. Offset    Size    Description
  2119.  00h    BYTE    style
  2120.         44h ('D') diamond style
  2121.         4Ch ('L') line style
  2122.  01h    BYTE    reserved (00h)
  2123.  02h    WORD    frequency in lines per inch [sic]
  2124.         currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
  2125.  04h    WORD    screen angle in degrees (-360 to 360)
  2126.         currently coerced to nearest of -45, 0, 45, or 90
  2127. ----------2FCD09-----------------------------
  2128. INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
  2129.     AX = CD09h
  2130. Return: AX = 0000h
  2131. SeeAlso: AX=CD0Ah"SWELL"
  2132. ----------2FCD0A-----------------------------
  2133. INT 2F - Intel Image Processing Interface - LOAD PALETTE
  2134.     AX = CD0Ah
  2135.     CX:BX -> palette structure (see below)
  2136. Return: AL = 00h successful
  2137.        = 80h unsuccessful
  2138. SeeAlso: AX=CD09h"Image Processing"
  2139.  
  2140. Format of palette structure:
  2141. Offset    Size    Description
  2142.  00h    BYTE    bits per pixel for which palette is to be used (1,2,4,6, or 8)
  2143.  01h    2**N    palette translation values, one per possible pixel value
  2144. ----------2FCD0A-----------------------------
  2145. INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
  2146.     AX = CD0Ah
  2147. Return: AX = 0000h
  2148. SeeAlso: AX=CD09h"SWELL"
  2149. ----------2FD000-----------------------------
  2150. INT 2F - MDEBUG display driver - GET DRIVER STATUS
  2151.     AX = D000h
  2152. Return: CF set on error
  2153.         all other registers must be unchanged)
  2154.     CF clear if successful
  2155.         AL = FFh
  2156.         AH = driver semaphor
  2157.         00h driver is not active
  2158.         01h driver is active
  2159.         BX = CS of the driver
  2160.         CX = driver version (CH = major, CL = minor, must be >= 0151h)
  2161.         DL = buffer semaphor
  2162.         00h driver is not pending
  2163.         01h driver is pending between functions 02h and 03h
  2164.         DH = show semaphor
  2165.         00h driver is not pending
  2166.         01h driver is pending between functions 04h and 05h
  2167. Notes:    MDEBUG is a shareware memory-resident debugger by Bernd Schemmer
  2168.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  2169.       FFh; the default is D0h for the display driver and D1h for the
  2170.       command driver (see INT 60/AH=00h"MDEBUG" for the actual multiplex
  2171.       numbers used)
  2172.     this function MUST be reentrant, as MDEBUG calls it after every popup
  2173.       before any other actions.  The handler should not change any
  2174.       registers if the display is in an unsupported mode or in a mode
  2175.       MDEBUG supports itself, e.g. a normal text mode like 80x25 or
  2176.       132x44 (v1.60+). In this case MDEBUG will not call any of the other
  2177.       functions for this popup session.
  2178.     MDEBUG will not call the other functions if the returned version is
  2179.       less than the actual version of MDEBUG.
  2180.     if the driver is reentrant, DL and DH should be 00h
  2181. SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
  2182. ----------2FD001-----------------------------
  2183. INT 2F - MDEBUG display driver - INITIALIZE DRIVER
  2184.     AX = D001h
  2185. Return: CF set on error
  2186.     AL = driver semaphor
  2187.     AH = buffer semaphor
  2188. Notes:    MDEBUG calls this function after every succesful call of the function
  2189.       00h. The function should reset all internal data and the status of
  2190.       the driver. If this function returns an error, MDEBUG will not call
  2191.       the other functions in this popup session.
  2192.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  2193.       FFh; the default is D0h for the display driver and D1h for the
  2194.       command driver
  2195. SeeAlso: AX=D000h
  2196. ----------2FD002-----------------------------
  2197. INT 2F - MDEBUG display driver - SAVE GRAPHIC DATA
  2198.     AX = D002h
  2199. Return: CF set on error
  2200.     CF clear if successful
  2201.         display memory saved and display switched to one of the text modes
  2202.           02h, 03h or 07h.
  2203. Note:    MDEBUG calls this function only once every popup session before
  2204.       displaying its windows.
  2205. SeeAlso: AX=D000h,AX=D003h
  2206. ----------2FD003-----------------------------
  2207. INT 2F - MDEBUG display driver - RESTORE GRAPHIC DATA
  2208.     AX = D003h
  2209. Return: CF set on error
  2210.     CF clear if successful
  2211.         display restored to the mode it was in before calling AX=D002h and
  2212.           the display memory is restored
  2213. Note:    MDEBUG calls this function only once every popup session just before
  2214.      it exits to normal DOS.
  2215. SeeAlso: AX=D000h,AX=D002h
  2216. ----------2FD004-----------------------------
  2217. INT 2F - MDEBUG display driver - SHOW SAVED DATA
  2218.     AX = D004h
  2219. Return: CF set on error
  2220.     CF clear if successful
  2221.         display switched to mode it was in before calling AX=D002h and the
  2222.           display memory is restored
  2223. Note:    This function needn't save the display memory before changing it.
  2224. SeeAlso: AX=D000h,AX=D005h
  2225. ----------2FD005-----------------------------
  2226. INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
  2227.     AX = D005h
  2228. Return: CF set on error
  2229.     CF clear if successful
  2230.         display restored to mode it was in before calling AX=D004h
  2231. Note:    This function needn't save or change the display memory
  2232. SeeAlso: AX=D000h,AX=D004h
  2233. ----------2FD0-------------------------------
  2234. INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
  2235.     AH = D0h
  2236.     AL = 06h-7Fh
  2237. Note:    these functions are reserved for future use
  2238. ----------2FD0-------------------------------
  2239. INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
  2240.     AH = D0h
  2241.     AL = 80h-FFh
  2242. Note:    these functions numbers are reserved for user defined features (e.g.
  2243.       communication between the transient und resident parts of the driver)
  2244. ----------2FD100-----------------------------
  2245. INT 2F - MDEBUG command driver - GET STATUS
  2246.     AX = D100h
  2247.     BX = version of MDEBUG (BH = major, BL = minor)
  2248.     CX = command driver counter
  2249. Return: DL = FFh
  2250.     BX = version number of the driver if it is less than the version in BX,
  2251.          else unchanged
  2252.     CX incremented
  2253. ---v1.60+---
  2254.     DS:SI -> MDEBUG identification table (see below)
  2255.     ES = segment of display memory used by MDEBUG
  2256.     DI = size of video mode used by MDEBUG
  2257.         (high byte = lines, low byte = columns)
  2258. Notes:    MDEBUG is a shareware memory-resident debugger by Bernd Schemmer
  2259.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  2260.       FFh; the default is D0h for the display driver and D1h for the
  2261.       command driver (see INT 60/AH=00h"MDEBUG" for the multiplex numbers
  2262.       actually used)
  2263.     this function must end with a far call to the old INT 2F handler after
  2264.       changing the registers
  2265.     this function MUST be reentrant
  2266.     if the version number returned in BX is less than 1.52, MDEBUG will
  2267.       not call any of the other functions during this popup session
  2268.     command drivers must also declare the following data at the given
  2269.       offsets in the code segment
  2270.         100h  3 BYTEs    JMP-command in .COM-files
  2271.         103h    BYTE    NOP-command (90h)
  2272.         104h 26 BYTEs    signature "Kommandotreiber für MDEBUG"
  2273.         11Eh 12 BYTEs    name of driver, e.g. "MDHISDRV.COM"
  2274.                 each driver must have a unique name
  2275.     MDEBUG will pass every key and command to the command driver(s) before
  2276.       checking for a valid internal command
  2277. SeeAlso: AX=D000h,AX=D101h
  2278.  
  2279. Format of MDEBUG identification table:
  2280. Offset    Size    Description
  2281.  -2    WORD    entry offset
  2282.  00h    WORD    CS of MDEBUG
  2283.  02h    DWORD    old INT 08h vector
  2284.  06h    DWORD    old INT 09h vector
  2285.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  2286.  0Eh    BYTE    length of version string
  2287.  0Fh  N BYTEs    version string
  2288. ----------2FD101-----------------------------
  2289. INT 2F - MDEBUG command driver - INITIALIZE DRIVER
  2290.     AX = D101h
  2291.     CX = command driver counter
  2292. Return: DL = FFh if successful
  2293.         CX incremented
  2294.          else error: all registers unchanged
  2295. Note:    this function must end with a  far call to the old INT 2F handler after
  2296.       changing the registers
  2297.     this function must be reentrant
  2298. ----------2FD102-----------------------------
  2299. INT 2F - MDEBUG command driver - EXECUTE DEBUGGER COMMAND
  2300.     AX = D102h
  2301.     BL = first character of the debugger command
  2302.     BH = last character of the debugger command (or blank)
  2303.     DS:SI -> parameter for the debugger command as ASCIZ string
  2304.     DS:DI -> MDEBUG data structure (see below)
  2305. Return: AL = FFh
  2306.     CF set on error
  2307.         AH = error number
  2308.         01h syntax error
  2309.         02h first shell of the command.com is activ
  2310.         03h esc pressed
  2311.         04h break pressed
  2312.         05h DOS is busy
  2313.         06h command ended
  2314.         07h division by zero
  2315.         08h invalid display driver
  2316.         09h invalid command driver
  2317.         0Ah error 8 and 9
  2318.         0Bh unknown error
  2319.         0Ch new error
  2320.             DS:SI -> ASCIZ error message (max 30 characters)
  2321.            else unknown error
  2322.     CF clear if successful
  2323.         AH = return code
  2324.         00h continue processing the command line
  2325.         01h leave MDEBUG popup session
  2326.         02h leave MDEBUG popup session and automatically popup again
  2327.             if the InDOS flag is zero
  2328.         03h put new command line into the input buffer,
  2329.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  2330.         04h process new command line
  2331.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  2332.            else unknown status, but continue processing commmand line
  2333. Note:    this function must end with a far call to the old INT 2F handler (with
  2334.       registers unchanged) if the driver does not support the debugger
  2335.       command in BX.  Otherwise, the driver must not chain to the old
  2336.       INT 2F.
  2337.  
  2338. Format of MDEBUG data structure:
  2339. Offset    Size    Description
  2340.  00h    WORD    register SE
  2341.  02h    WORD    register OF
  2342.  04h    WORD    register FS
  2343.  06h    WORD    register FO
  2344.  08h    WORD    register AX
  2345.  0Ah    WORD    register BX
  2346.  0Ch    WORD    register CX
  2347.  0Eh    WORD    register DX
  2348.  10h    WORD    register SI
  2349.  12h    WORD    register DI
  2350.  14h    WORD    register DS
  2351.  16h    WORD    register ES
  2352.  18h    WORD    register BP
  2353.  1Ah    WORD    register SS
  2354.  1Ch    WORD    register SP
  2355.  1Eh    WORD    register FL (flags)
  2356.  20h    WORD    register R0
  2357.  22h    WORD    register R1
  2358.  24h    WORD    register R2
  2359.  26h    WORD    register R3
  2360.  28h    WORD    register R4
  2361.  2Ah    WORD    register R5
  2362.  2Ch    WORD    register R6
  2363.  2Eh    WORD    register R7
  2364.  30h    WORD    register R8
  2365.  32h    WORD    register CS, return-address
  2366.  34h    WORD    register IP, return-address
  2367.  36h    WORD    saved data for key <F6>, segment
  2368.  38h    WORD    saved data for key <F6>, offset
  2369.  3Ah 12 WORDs    saved registers for the key <F8>
  2370.         (original register values at popup entry of MDEBUG)
  2371.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  2372.  52h 12 WORDs    saved registers for the key <SHIFT-F8>
  2373.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  2374.  6Ah    DWORD    address of the DOS-invars-table
  2375.  6Eh    DWORD    address of the InDOS flag
  2376.  72h    WORD    offset of the register which is used for the segment of the
  2377.         first monitor window
  2378.  74h    WORD    offset of the register which is used for the offset of the
  2379.         first monitor window
  2380.  76h    WORD    name of the register which is used for the segment of the
  2381.         first monitor segment
  2382.  78h    WORD    name of the register which is used for the offset of the first
  2383.         monitor window     
  2384.  7Ah    WORD    pseudo register 1
  2385.  7Ch    WORD    pseudo register 2
  2386. ----------2FD103-----------------------------
  2387. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
  2388.     AX = D103h
  2389.     BX = key code (like result of an interrupt 16h call)
  2390.     CX = 0 -> the cursor is in the ASCII column of the monitor
  2391.     CX = 1 -> the cursor is in one of the hex fields of the monitor
  2392.     DS:SI -> MDEBUG data structure (see AX=D102h)
  2393.     ES:DI -> actual byte in the monitor
  2394. Return: AL = FFh
  2395.     AH = return code
  2396.         00h key processed, read next key
  2397.         01h leave MDEBUG popup session
  2398.         02h leave MDEBUG popup session and automatically popup again if DOS
  2399.         is not busy
  2400.         03h signal an error (beep)
  2401.         04h driver has redefined the key, proceed with the new key
  2402.         BX = new key code
  2403.         MDEBUG will not pass the new key to the command driver
  2404.        else treat like code 00h
  2405. Note:    this function must end with a far call to the old INT 2F handler (with
  2406.       registers unchanged) if the driver does not support the key in BX.
  2407.       Otherwise, the driver must not chain to the old INT 2F.
  2408. SeeAlso: AX=D104h
  2409. ----------2FD104-----------------------------
  2410. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE DEBUGGER
  2411.     AX = D104h
  2412.     DS:SI -> MDEBUG data structure (see AX=D102h)
  2413. Return: AL = FFh
  2414.     AH = return code
  2415.         00h key processed, read next key
  2416.         01h leave MDEBUG popup session
  2417.         02h leave MDEBUG popup session and automactically popup again if
  2418.         DOS is not busy
  2419.         03h signal an error (beep)
  2420.         04h driver has redefined the key, proceed with the new key
  2421.         BX = new key code
  2422.         MDEBUG won't pass the new key to the command driver
  2423.         05h put new command line into the input buffer
  2424.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  2425.         06h process new command line
  2426.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  2427.        else treat like code 00h
  2428. Note:    this function must end with a far call to the old INT 2F handler if the
  2429.       driver does not support the key in BX.  Otherwise, the driver must
  2430.       not chain to the old INT 2F.
  2431. SeeAlso: AX=D103h
  2432. ----------2FD1-------------------------------
  2433. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  2434.     AH = D1h
  2435.     AL = 05h-0Ah
  2436. Note:    these functions are reserved for future use
  2437. ----------2FD110-----------------------------
  2438. INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
  2439.     AX = D110h
  2440. Return: DL = FFh
  2441.     ES:BX -> next program in the chain for INT 2F
  2442.     CX = code segment of this driver
  2443.     DI = offset of driver identification table (see below) (v1.60+)
  2444. Notes:    only called by the transient part of the driver
  2445.     must be reentrant and the driver must not chain this function to the
  2446.       old INT 2F
  2447.  
  2448. Format of the driver identification table:
  2449. Offset    Size    Description
  2450.  00h  26 BYTEs     signature "Kommandotreiber für MDEBUG"
  2451.  27h  12 BYTEs     name of driver, e.g. "MDHISDRV.COM"
  2452.          each driver must have a unique name
  2453. ----------2FD111-----------------------------
  2454. INT 2F - MDEBUG command driver - START DRIVER
  2455.     AX = D111h
  2456. Return: DL = FFh
  2457. Notes:    only called by the transient part of the driver to inform the resident
  2458.       part that it is installed
  2459.     the function must be reentrant and the driver mustn't chain this
  2460.       function to the old INT 2F
  2461. SeeAlso: AX=D101h,AX=D112h
  2462. ----------2FD112-----------------------------
  2463. INT 2F - MDEBUG command driver - END DRIVER
  2464.     AX = D112h
  2465. Return: DL = FFh
  2466. Notes:    only called by the transient part of the driver to inform the resident
  2467.       part that it will be released after this function
  2468.     the function must be reentrant and the driver mustn't chain this
  2469.       function to the old INT 2F
  2470. SeeAlso: AX=D101h,AX=D111h
  2471. ----------2FD1-------------------------------
  2472. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  2473.     AH = D1h
  2474.     AL = 13h-7Fh
  2475. Note:    these functions are reserved for future use
  2476. ----------2FD1-------------------------------
  2477. INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
  2478.     AH = D1h
  2479.     AL = 80h-FFh
  2480. Note:    these functions are reserved for user defined features (e.g.
  2481.       communication between the transient und resident parts of the    driver)
  2482. ----------2FD200BX5144-----------------------
  2483. INT 2F - Quarterdeck - QEMM/QRAM/VIDRAM/MANIFEST v5.0+ - INSTALLATION CHECK
  2484.     AX = D200h
  2485.     BX = 5144h ("QD")
  2486.     CX = 4D45h ("ME")
  2487.     DX = 4D30h ("M0")
  2488. Return: AL = FFh installed      
  2489.     if BX,CX,DX registers were as specified on entry:
  2490.         BX = 4D45h ("ME")
  2491.         CX = 4D44h ("MD")
  2492.         DX = 5652h ("VR")
  2493. Notes:    QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
  2494.       through FFh, then C0h through D1h
  2495.     QEMM and QRAM both responded the same
  2496.     for AL <> 0, if the BX/CX/DX values don't match a the identifier of a
  2497.       Quarterdeck product, it just chains to the previous INT 2F handler
  2498. ----------2FD201BX4849-----------------------
  2499. INT 2F - Multiplex - Quarterdeck - GET QD HIMEM PRESENCE
  2500.     AX = D201h
  2501.     BX = 4849h ("HI")
  2502.     CX = 4D45h ("ME")
  2503.     DX = 4D51h ("MQ")
  2504. Return: BX = 4F4Bh ("OK")
  2505.     ES:DI -> HIMEM entry point
  2506. Notes:    QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
  2507.       through FFh, then C0h through D1h
  2508. SeeAlso: AX=D201h/BX=5145h
  2509. ----------2FD201BX4849-----------------------
  2510. INT 2F - Quarterdeck - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
  2511.     AX = D201h
  2512.     BX = 4849h ("HI")
  2513.     CX = 5241h ("RA")
  2514.     DX = 4D30h ("M0")
  2515. Return: BX = 4F4Bh ("OK")
  2516.     CX = segment of start of HIRAM chain
  2517.     DX = QEMM/QRAM code segment
  2518. Notes:    QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
  2519.       through FFh, then C0h through D1h
  2520.     QEMM and QRAM both responded the same
  2521.     the HIRAM memory chain has the same format as the regular DOS 4.0
  2522.       memory chain (see INT 21/AH=52h), except that XMS Upper Memory Blocks
  2523.       have the block header program name field set to "UMB"; blocks whose
  2524.       "owner" field is set to the QEMM/QRAM code segment returned in DX
  2525.       are locked out regions such as video memory and ROMs.
  2526. ----------2FD201BX4D41-----------------------
  2527. INT 2F - Quarterdeck - MANIFEST v1.0+ - INSTALLATION CHECK
  2528.     AX = D201h
  2529.     BX = 4D41h ("MA")
  2530.     CX = 4E49h ("NI")
  2531.     DX = 4645h ("FE")
  2532. Return: BX = 5354h ("ST")
  2533. Note:    QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
  2534.       through FFh, then C0h through D1h
  2535. ----------2FD201BX5145-----------------------
  2536. INT 2F - Quarterdeck - QEMM v5.0+ - INSTALLATION CHECK
  2537.     AX = D201h
  2538.     BX = 5145h ("QE")
  2539.     CX = 4D4Dh ("MM")
  2540.     DX = 3432h ("42")
  2541. Return: BX = 4F4Bh ("OK")
  2542.     ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
  2543. Note:    QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
  2544.       through FFh, then C0h through D1h
  2545. SeeAlso: AX=D201h/BX=4849h,INT 67/AH=3Fh
  2546. ----------2FD201BX5649-----------------------
  2547. INT 2F - Quarterdeck - VIDRAM v5.0+ - INSTALLATION CHECK
  2548.     AX = D201h
  2549.     BX = 5649h ("VI")
  2550.     CX = 4452h ("DR")
  2551.     DX = 414dh ("AM")
  2552. Return: BX = 4F4Bh ("OK")
  2553.     ES:DI -> VIDRAM entry point
  2554. Note:    QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
  2555.       through FFh, then C0h through D1h
  2556.  
  2557. Call VIDRAM entry point with:
  2558.     AH = 00h get status
  2559.         Return: AL = VIDRAM state (see below)
  2560.             BL = bit 0: ???
  2561.                  bits 1-7 not used
  2562.             BH = ???
  2563.             CL = current monitor (01h = mono, 80h = color)
  2564.             SI = current top of memory (paragraph)???
  2565.             DI = segment of ???
  2566.     AH = 01h setup
  2567.         AL = VIDRAM state (00h off, 01h no EGA graphics, 02h no graph)
  2568.         BL = bit 0: ???
  2569.              bits 1-7 not used
  2570.         BH = ???
  2571.         CL = monitor (01h = monochrome, 80h = color)
  2572.         SI = new top of memory (paragraph)???
  2573.     AH = 02h get ???
  2574.         Return: ES:DI -> ??? data
  2575. Return: CF set on error
  2576.     CF clear if successful
  2577. ----------2FD300BX4562-----------------------
  2578. INT 2F - TeleReplica - INSTALLATION CHECK
  2579.     AX = D300h
  2580.     BX = 4562h
  2581.     CX = 2745h
  2582.     DX = ??? (03F8h for v3.9)
  2583. Return: SI = segment of resident code
  2584.     AX = 251Dh
  2585.     BX = DF21h
  2586.     CX = F321h
  2587.     DX = ???
  2588. ----------2FD3CB-----------------------------
  2589. INT 2F - LapLink Quick Connect v6 - API
  2590.     AX = D3CBh
  2591.     CX = function
  2592.         0002h get ???
  2593.         Return: BX:AX -> ???
  2594.             CL = ???
  2595.             CH = ???
  2596.             DX = ???
  2597.             DI = COM1 I/O port???
  2598.             SI = COM2 I/O port???
  2599.         0003h initialization???
  2600.         0004h ???
  2601.         0005h initialization???
  2602.         0006h reset/clear ???
  2603.         Return: AX = 0000h
  2604.             ES:DI -> next byte after ??? cleared by this call
  2605.         0007h initialization???
  2606.         0008h uninstall
  2607.         Return: BX = status
  2608.                 0000h successful
  2609.                 FFFFh incomplete, stub remains in memory
  2610. Return: CX = 534Bh (except function 0002h)
  2611. ----------2FD44D-----------------------------
  2612. INT 2F - 4DOS.COM v2.1+ - API
  2613.     AX = D44Dh
  2614.     BH = function
  2615.         00h installation check
  2616.         Return: AX = 44DDh
  2617.             BL = minor version number
  2618.             BH = major version number
  2619.             CX = PSP segment address for current invocation
  2620.             DL = 4DOS shell number (0 for the first (root) shell,
  2621.                  updated each time a new copy is loaded)
  2622.         01h (internal, v2.1-3.03) terminate current copy of 4DOS
  2623.         Return: nothing
  2624.         (internal, v4.0) ???
  2625.         Return: ES:BX -> data area (see below)
  2626.         02h ???
  2627.         DX = ???
  2628.     ---v2.1-3.03 only---
  2629.         03h EXEC program
  2630.         CX:DX -> EXEC record
  2631.         FEh deallocate shell number (passed through to root shell)
  2632.         ???
  2633.         FFh allocate shell number (passed through to root shell)
  2634. Note:    bug in v3.00 will crash system if unrecognized value in BH
  2635. SeeAlso: AX=D44Eh,AX=E44Dh,INT 21/AX=4403h
  2636.  
  2637. Format of EXEC record:
  2638. Offset    Size    Description
  2639.  00h    WORD    offset of ASCIZ program name in same segment as EXEC record
  2640.  02h    WORD    offset of DOS commandline in same segment as EXEC record
  2641.  04h    WORD    segment of environment for child process (see INT 21/AH=26h)
  2642.  
  2643. Format of 4DOS v4.0 data area:
  2644. Offset    Size    Description
  2645.  00h  2 BYTEs    ???
  2646.  06h    WORD    XMS handle for swapping
  2647.     ???
  2648. ----------2FD44E-----------------------------
  2649. INT 2F - 4DOS v3.0+ - AWAITING USER INPUT
  2650.     AX = D44Eh
  2651. ---4DOS v3.01+---
  2652.     BX = 0000h 4DOS is ready to display prompt
  2653.        = 0001h 4DOS has displayed the prompt, about to accept user input
  2654. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  2655. Note:    v3.00 only makes the call corresponding to BX=0001h, does not set BX
  2656. SeeAlso: AX=D44Dh
  2657. ----------2FD44FBX0000-----------------------
  2658. INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  2659.     AX = D44Fh
  2660.     BX = 0000h
  2661. Return: AX = 44DDh if installed
  2662. SeeAlso: AX=D44Fh/BX=0001h
  2663. ----------2FD44FBX0001-----------------------
  2664. INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  2665.     AX = D44Fh
  2666.     BX = 0001h
  2667.     CX = number of keystrokes (01h-FFh)
  2668.     DS:DX -> keystroke list (one word per keystroke)
  2669. Return: AX = status
  2670.         0000h successful
  2671.         nonzero failed
  2672.     BX,CX,DX destroyed
  2673. Notes:    the keystrokes are the exact values to return from subsequent calls to
  2674.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  2675.         0000h causes subfunctions 01h and 11h to indicate an empty
  2676.             keyboard buffer
  2677.         FFFFh is followed by a word indicating the number of clock
  2678.             ticks to delay before the next faked keystroke
  2679.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  2680.       invocation, and does not range-check CX; it will overwrite memory
  2681.       following the resident portion if CX is greater than 100h.
  2682. SeeAlso: AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
  2683. ----------2FD600-----------------------------
  2684. INT 2F - HEART.COM - INSTALLATION CHECK
  2685.     AX = D600h
  2686. Return: AX = 0303h (two hearts) if installed
  2687.         ES:DI -> buffer (see below)
  2688. Note:    HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
  2689.     Once the host program has identified the address of the data area, it
  2690.       can change this to indicate safe/critical, alternate colours, etc.
  2691.     The entries for the color table are in char/attrib form.  Every two
  2692.       entries form a pair which is alternated between 68 times a minute.
  2693.       The first half of the table is for color videos, the second mono.
  2694.       Within each half, the first half is for the safe chars, and the
  2695.       second for the critical chars.
  2696.  
  2697. Format of buffer:
  2698. Offset    Size    Description
  2699.  00h  8 WORD    Table of colors/attributes (see notes).
  2700.  10h    BYTE    flags
  2701.         bit 0: program is in critical section, so flash double
  2702.             exclamation mark
  2703.         bit 1: program is in safe code, so flash the heart character
  2704.  11h    WORD    position of heartbeat on screen, normally 009Eh (last column
  2705.         of second line)
  2706. ----------2FD701-----------------------------
  2707. INT 2F - BANYAN VINES v4+ - GET BANV INTERRUPT NUMBER
  2708.     AX = D701h
  2709. Return: AX = 0000h installed
  2710.         BX = interrupt number (60h to 66h)
  2711.        nonzero not present
  2712. Note:    if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
  2713.       necessary to examine the four bytes preceding the handlers for
  2714.       INT 60 through INT 66 for the string "BANV"
  2715. ----------2FDA55-----------------------------
  2716. INT 2F - TRAP.COM - INSTALLATION CHECK
  2717.     AX = DA55h
  2718.     DL = interrupt number
  2719.     DH = ???
  2720. Return: if installed
  2721.         AH = interrupt number
  2722.         AL = ???
  2723.         ES:BX -> ???
  2724. Notes:    TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
  2725.     a separate copy of TRAP is loaded for each interrupt to be traced; thus
  2726.       the interrupt number is part of the installation check
  2727. ----------2FDC00-----------------------------
  2728. INT 2F - GOLD.COM - INSTALLATION CHECK
  2729.     AX = DC00h
  2730. Return: AL = 00h not installed
  2731.        = FFh installed
  2732. Note:    GOLD is a TSR by Bob Eager which makes the NumLock key return the code
  2733.       for F1; the purpose is to improve Kermit's VTxxx emulation
  2734. ----------2FDC01-----------------------------
  2735. INT 2F - GOLD.COM - GET STATE
  2736.     AX = DC01h
  2737. Return:    AL = status
  2738.         00h off
  2739.         01h on
  2740. SeeAlso: AX=DC00h,AX=DC02h
  2741. ----------2FDC02-----------------------------
  2742. INT 2F - GOLD.COM - SET STATE
  2743.     AX = DC02h
  2744.     DL = new state
  2745.         00h off
  2746.         01h on
  2747. Return: AL = 00h (OK)
  2748. SeeAlso: AX=DC01h
  2749. ----------2FDD-------------------------------
  2750. INT 2F - SoftCom programs - API
  2751.     AH = DDh
  2752.     AL = FEh get info
  2753.         Return: ES:BX -> TSR info list (see below)
  2754.     AL = program identifier
  2755.         BH = function
  2756.         FDh get version
  2757.             Return: BX = version
  2758.         FFh installation check
  2759.             Return: AL = FFh if installed
  2760.                 BX = version
  2761.                 ES = segment of resident code
  2762.         others vary by program
  2763. Return: AL = status
  2764.         bit 7 set on error
  2765.         AL = 81h unknown function
  2766.  
  2767. Format of TSR info list:
  2768. Offset    Size    Description
  2769.  00h  9 BYTEs    blank-padded ASCIZ program name
  2770.  09h    BYTE    program ID
  2771.  0Ah    WORD    program's PSP segment
  2772.  0Ch    WORD    program version (major in high byte)
  2773.  0Eh    DWORD    pointer to next item in info list or 0000h:0000h
  2774.  12h    BYTE    number of interrupts hooked
  2775.  13h  5 BYTEs    interrupt numbers hooked by program
  2776.  18h  8 BYTEs    reserved
  2777. ----------2FDE00BX4445-----------------------
  2778. INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
  2779.     AX = DE00h
  2780.     BX = 4445h ("DE")
  2781.     CX = 5844h ("XD")
  2782.     DX = 4931h ("I1")
  2783. Return: AL = FFh if installed (even if other registers do not match)
  2784.     if BX,CX, and DX were as specified on entry,
  2785.         BX = 4845h ("HE")
  2786.         CX = 5245h ("RE")
  2787.         DX = 4456h ("DV")
  2788. Notes:    AH=DEh is the default XDI multiplex number, but may range from C0h-FFh
  2789.     programs should check for XDI starting at DEh to FFh, then C0h to DDh
  2790.     the XDI handler should not issue any DOS or BIOS calls, nor should it
  2791.       issue DESQview API calls other than those allowed from hardware ints
  2792. ----------2FDE01-----------------------------
  2793. INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
  2794.     AX = DE01h
  2795.     BX = driver ID
  2796.     other registers as needed by driver
  2797. Notes:    XDI drivers should pass this call through to previous handler if ID
  2798.       does not match
  2799.     DESQview never calls this function
  2800. ----------2FDE01BX5242-----------------------
  2801. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
  2802.     AX = DE01h
  2803.     BX = 5242h ("RB")
  2804.     CX:DX = program identifier
  2805.         656F7000h ("eop",0) for DVeop
  2806. Return: AX = 5242h ("RB") if installed
  2807.         ES:BX -> data or entry point
  2808.         CX = version number (CH = major, CL = minor)
  2809.  
  2810. Call DVeop entry point with:
  2811.     ES:DI -> callback address or 0000h:0000h to remove callback
  2812. Return: AX = status
  2813.         0000h failed (callback table full or attempted to remove non-
  2814.             existent callback)
  2815.         0001h successful
  2816.         ES:DI -> chaining address
  2817.     BX,CX,DX destroyed
  2818. Notes:    the callback function is called with a simulated interrupt when the
  2819.       DESQview window containing it is closed; it should perform all
  2820.       necessary cleanup and then perform a FAR jump to the chaining address
  2821.       or an IRET if the chaining address is 0000h:0000h
  2822.     if the program wishes to remove itself before the window is closed, it
  2823.       should call the DVeop entry point with the previously returned
  2824.       chaining address and ignore the returned chaining address.
  2825. ----------2FDE01BX7474-----------------------
  2826. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
  2827.     AX = DE01h
  2828.     BX = 7474h
  2829.     CL = function
  2830.         00h installation check
  2831.         Return: AL = FFh
  2832.         01h get process handle
  2833.         DX = keys on Open Window menu (DL = first, DH = second)
  2834.         Return: AX = process handle or 0000h if not running
  2835.         02h (v1.3+) set TMAN handle
  2836.         DX = TMAN process handle
  2837.         03h (v1.3+) set open keys to ignore on next CL=01h call
  2838.         DX = keys on Open Window menu (DL = first, DH = second)
  2839. Return: BX = 4F4Bh ("OK")
  2840.     DL destroyed
  2841. Note:    DVTXDI is distributed as part of the shareware products DVTree (DOS
  2842.      shell/DESQview process manager) and DVTMAN by Mike Weaver
  2843. ----------2FDE01BX7575-----------------------
  2844. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
  2845.     AX = DE01h
  2846.     BX = 7575h
  2847.     CX = function
  2848.         0000h installation check
  2849.         Return: AX = 00FFh if installed
  2850.         0001h turn on notification (currently unused)
  2851.         Return: AX = 0001h
  2852.         0002h turn off notification (currently unused)
  2853.         Return: AX = 0001h
  2854.         0003h get process information
  2855.         Return: AX = status
  2856.                 0000h failed
  2857.                 0001h successful
  2858.                 BX = last instantaneous time slice
  2859.                     in 1/100s (v1.10)
  2860.                     in 1/18s (v1.11+)
  2861.                 CX = number of processes
  2862.                 DX = number of "(starting)" records (v2.00+)
  2863.                 SI = number of records in process info array
  2864.                      (v2.00+) (always 15 for v1.x)
  2865.                 ES:DI -> process info array (see below)
  2866.         0004h get version
  2867.         Return: AH = major version
  2868.             AL = minor version
  2869.         0005h (v1.10+) get time since DESQview started
  2870.         Return: DX:AX = 1/100s since DV start (v1.10)
  2871.             DX:AX = 1/18s since DV start (v1.11+)
  2872.         0006h (v1.10+) get number of task switches
  2873.         Return: DX:AX = total task switches
  2874.             CX = task switches in last instantaneous interval
  2875. Notes:    DVSIXDI is part of the DVSI (DESQview System Information) package by
  2876.       Daniel J. Bodoh
  2877.     for v1.00, function 0003h allocates common memory, which the caller
  2878.       must deallocate after reading the process information; only the
  2879.       currently used records are placed in the buffer
  2880.     for v1.10, function 0003h merely returns a pointer to the internal
  2881.       array of process information; the caller should make a copy of the
  2882.       array while inside a critical section (see INT 15/AX=101Bh).    Only
  2883.       those records with bit 7 of the first byte set are valid.
  2884.  
  2885. Format of information for one process (v1.00):
  2886. Offset    Size    Description
  2887.  00h    BYTE    flags
  2888.         bit 7: process slot is valid
  2889.  01h    WORD    offset into DESQVIEW.DVO of program's record if started from
  2890.          Open Windows menu, else undefined
  2891.  03h    WORD    Switch Windows window number
  2892.  05h    WORD    segment of process handle
  2893.  07h    WORD    number of tasks owned by process
  2894.  09h    WORD    mapping context of process
  2895.  0Bh    DWORD    hook for other programs
  2896.  
  2897. Format of information for one process (v1.10-v2.00):
  2898. Offset    Size    Description
  2899.  00h    BYTE    flags
  2900.         bit 7: valid record
  2901.             6: (v2.00+) record is allocated; if bit 7 clear, process
  2902.                 is "(starting)" and only offsets 01h and 09h are valid
  2903.             5: (v2.00+) this app currently owns the CPU
  2904.             4: reserved (0)
  2905.             3: DESQview system task
  2906.             2: reserved (0)
  2907.             1: task has keyboard (currently unused)
  2908.             0: task swapped out (currently unused)
  2909.  01h    WORD    Open Window keys
  2910.  03h    WORD    Switch Windows number
  2911.  05h    WORD    segment of process handle
  2912.  07h    WORD    number of tasks for process
  2913.  09h    WORD    process mapping context
  2914.  0Bh    DWORD    time process started (relative to start of DESQview)
  2915.  0Fh    DWORD    time process last got CPU (relative to start of DESQview)
  2916.  13h    DWORD    time process last gave up CPU (relative to start of DESQview)
  2917.  17h    DWORD    total CPU time since process started
  2918.  1Bh    DWORD    CPU time at start of current instantaneous interval
  2919.  1Fh    DWORD    CPU time in current instantaneous interval
  2920.  23h    DWORD    hook for other programs
  2921. Note:    all times are in 1/100s for v1.10, in 1/18s for v1.11+
  2922. ----------2FDE01BXFFFE-----------------------
  2923. INT 2F - DESQview v2.26+ XDI - DVXMS.DVR - ???
  2924.     AX = DE01h
  2925.     BX = FFFEh
  2926.     CX = 4D47h ("MG")
  2927.     DX = 0052h (0,"R")
  2928. Return: AL = FFh
  2929.     DX = 584Dh
  2930. ----------2FDE02-----------------------------
  2931. INT 2F - DESQview v2.26+ External Device Interface - DV INITIALIZATION COMPLETE
  2932.     AX = DE02h
  2933.     BX = mapping context of DESQview
  2934.     DX = handle of DESQview system task
  2935. SeeAlso: AX=DE03h
  2936. Note:    driver should pass this call to previous handler after doing its work
  2937. ----------2FDE03-----------------------------
  2938. INT 2F - DESQview v2.26+ External Device Interface - DV TERMINATION
  2939.     AX = DE03h
  2940.     BX = mapping context of DESQview
  2941.     DX = handle of DESQview system task
  2942. SeeAlso: AX=DE02h
  2943. Notes:    driver should pass this call to previous handler before doing its work
  2944.     DESQview makes this call when it is exiting, but before unhooking any
  2945.       interrupt vectors
  2946. ----------2FDE04-----------------------------
  2947. INT 2F - DESQview v2.26+ External Device Interface - ADD PROCESS
  2948.     AX = DE04h
  2949.     BX = mapping context of new process
  2950.     DX = handle of process
  2951. Return: nothing
  2952. Notes:    XMS XDI handler (installed by default) allocates a 22-byte record
  2953.       (see below) from "common" memory to control access to XMS memory
  2954.     all DOS, BIOS, and DV API calls are valid in handler
  2955.     driver should pass this call to previous handler after processing it
  2956. SeeAlso: AX=DE05h
  2957.  
  2958. Format of XMS XDI structure:
  2959. Offset    Size    Description
  2960.  00h    DWORD    pointer to 10-byte record???
  2961.  04h    DWORD    pointer to next XMS XDI structure
  2962.  08h    WORD    mapping context
  2963.  0Ah    BYTE    ???
  2964.  0Bh  5 BYTEs    XMS entry point to return for INT 2F/AX=4310h
  2965.         (FAR jump to next field)
  2966.  10h  6 BYTEs    FAR handler for XMS driver entry point
  2967.         (consists of a FAR CALL followed by RETF)
  2968. ----------2FDE05-----------------------------
  2969. INT 2F - DESQview v2.26+ External Device Interface - REMOVE PROCESS
  2970.     AX = DE05h
  2971.     BX = mapping context of process
  2972.     DX = handle of last task in process
  2973. Return: nothing
  2974. Notes:    XMS XDI handler releases the structure allocated by AX=DE04h
  2975.     driver should pass this call to previous handler before processing it
  2976.     all DOS, BIOS, and DV API calls except those generating a task switch
  2977.       are valid in handler
  2978. SeeAlso: AX=DE04h
  2979. ----------2FDE06-----------------------------
  2980. INT 2F - DESQview v2.26+ External Device Interface - CREATE TASK
  2981.     AX = DE06h
  2982.     BX = mapping context of process containing task
  2983.     DX = handle of new task
  2984. Notes:    driver should pass this call to previous handler after processing it
  2985.     all DOS, BIOS, and DV API calls are valid in handler
  2986. ----------2FDE07-----------------------------
  2987. INT 2F - DESQview v2.26+ External Device Interface - TERMINATE TASK
  2988.     AX = DE07h
  2989.     BX = mapping context of process containing task
  2990.     DX = handle of task
  2991. Notes:    driver should pass this call to previous handler before processing it
  2992.     all DOS, BIOS, and DV API calls except those generating a task switch
  2993.       are valid in handler
  2994. ----------2FDE08-----------------------------
  2995. INT 2F - DESQview v2.26+ External Device Interface - SAVE STATE
  2996.     AX = DE08h
  2997.     BX = mapping context of task being switched from
  2998.     DX = handle of task being switched from
  2999. Notes:    invoked prior to task swap, interrupts, etc
  3000.     driver should pass this call to previous handler after processing it
  3001. ----------2FDE09-----------------------------
  3002. INT 2F - DESQview v2.26+ External Device Interface - RESTORE STATE
  3003.     AX = DE09h
  3004.     BX = mapping context of task being switched to
  3005.     DX = handle of task being switched to
  3006. Notes:    state is restored except for interrupts
  3007.     driver should pass this call to previous handler before processing it
  3008. ----------2FDE0A-----------------------------
  3009. INT 2F - DESQview v2.26+ External Device Interface - CHANGE KEYBOARD FOCUS
  3010.     AX = DE0Ah
  3011.     BX = mapping context of task receiving focus
  3012.     DX = handle of running task
  3013. Notes:    driver should pass this call to previous handler before processing it
  3014.     this call often occurs inside a keyboard interrupt
  3015. ----------2FDE0B-----------------------------
  3016. INT 2F - DESQview v2.26+ External Device Interface - DVP PROCESSING COMPLETE
  3017.     AX = DE0Bh
  3018.     BX = mapping context of DESQview system task
  3019.     CX = number of system memory paragraphs required for the use of all
  3020.         XDI drivers (DV will add this to system memory in DVP buffer)
  3021.     DX = handle of DESQview system task
  3022.     SI = mapping context of new process if it starts
  3023.     ES:DI -> DVP buffer
  3024. Return: CX incremented as needed
  3025. Notes:    once DV invokes this function, the DVP buffer contents may be changed
  3026.     driver should pass this call to previous handler before processing it
  3027. ----------2FDE0C-----------------------------
  3028. INT 2F - DESQview v2.26+ External Device Interface - SWAP OUT PROCESS
  3029.     AX = DE0Ch
  3030.     BX = mapping context of task being swapped out
  3031.     DX = handle of DESQview system task
  3032. Note:    driver should pass this call to previous handler after processing it
  3033. ----------2FDE0D-----------------------------
  3034. INT 2F - DESQview v2.26+ External Device Interface - SWAP IN PROCESS
  3035.     AX = DE0Dh
  3036.     BX = mapping context of process just swapped in
  3037.     DX = handle of DESQview system task
  3038. Note:    driver should pass this call to previous handler before processing it
  3039. ----------2FDE0E-----------------------------
  3040. INT 2F - DESQview v2.26+ External Device Interface - DVP START FAILED
  3041.     AX = DE0Eh
  3042.     BX = mapping context of DESQview system task
  3043.     DX = handle of DESQview system task
  3044.     SI = mapping context of failed process (same as for call to AX=DE0Bh)
  3045. Note:    driver should pass this call to previous handler after processing it
  3046. ----------2FDF--BX4448-----------------------
  3047. INT 2F - HyperDisk v4.20+ - INSTALLATION CHECK
  3048.     AH = DFh
  3049.     BX = 4448h ('DH')
  3050. Return: AL = FFh if installed
  3051.         CX = 5948h ('YH')
  3052.         BX:DX -> ??? in resident portion if BX=4448h on entry
  3053. Note:    HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  3054. SeeAlso: INT 13/AX=8EEDh
  3055. ----------2FE300-----------------------------
  3056. INT 2F - ANARKEY.COM - INSTALLATION CHECK
  3057.     AX = E300h
  3058. Return: AL = 00h not installed
  3059.          FEh if installed but suspended (v3.0+)
  3060.          FFh installed
  3061. Notes:    ANARKEY.COM is a commandline recall program by Steven Calwas
  3062.     E3h is the default function number, but can be set to any value from
  3063.       C0h to FFh
  3064. SeeAlso: AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h,AX=E307h
  3065. ----------2FE301-----------------------------
  3066. INT 2F - ANARKEY.COM v2+ - GET ???
  3067.     AX = E301h
  3068. Return: DX:BX -> ???
  3069. SeeAlso: AX=E300h
  3070.  
  3071. Format of returned data structure for ANARKEY v2.0:
  3072. Offset    Size    Description
  3073.  -7   7 BYTEs    signature ('ANARKEY')
  3074.  00h    WORD    ??? (I see 0001h in v2.0)
  3075.  02h    WORD    ??? (I see 0001h in v2.0)
  3076.  04h    WORD    ??? (I see 0 in v2.0)
  3077.  06h    WORD    PSP segment of next program loaded
  3078.  
  3079. Format of returned data structure for ANARKEY v3+:
  3080. Offset    Size    Description
  3081.  -1    BYTE    multiplex number
  3082.  00h    WORD    ??? (I see 0001h in v3.0-4.0)
  3083.  02h    WORD    ??? (I see 0001h in v3.0-4.0)
  3084.  04h    BYTE    ??? (I see 0 in v3.0-4.0)
  3085.  05h    WORD    PSP segment of next program loaded
  3086. ----------2FE302-----------------------------
  3087. INT 2F - ANARKEY.COM v3+ - ???
  3088.     AX = E302h
  3089.     BL = ???
  3090. Return: ???
  3091. SeeAlso: AX=E300h
  3092. ----------2FE303-----------------------------
  3093. INT 2F - ANARKEY.COM v3+ - ANARKMD API
  3094.     AX = E303h
  3095.     BL = function
  3096.         01h    toggle insert mode
  3097.         02h    display contents of history buffer
  3098.         03h    write history buffer to file
  3099.         ES:DX -> file name
  3100.         04h    clear history buffer
  3101.         05h    undefine all aliases
  3102.         06h    show aliases
  3103.         07h    list programs using Unix switchar
  3104.         08h    jump to bottom of history buffer    
  3105.         09h (v4.0) add string to history buffer
  3106.         ES:DX -> ASCIZ string
  3107.         0Ah (v4.0) ???
  3108.         ES:DX -> ???
  3109.         0Bh (v4.0) copy string to edit buffer for use as next input line
  3110.         ES:DX -> ASCIZ string
  3111.         0Ch (v4.0) ???
  3112.         0Dh (v4.0) copy ??? to ???
  3113.         0Eh (v4.0) ???
  3114.         0Fh (v4.0) ???
  3115.         10h (v4.0) set ??? flag
  3116.         11h (v4.0) display error message about running in EMS under Windows
  3117. Return: ???
  3118. SeeAlso: AX=E300h
  3119. ----------2FE304-----------------------------
  3120. INT 2F - ANARKEY.COM v2+ - ???
  3121.     AX = E304h
  3122.     BL = ???
  3123. Return: ???
  3124. SeeAlso: AX=E300h
  3125. ----------2FE305-----------------------------
  3126. INT 2F - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
  3127.     AX = E305h
  3128.     BL = new state
  3129.         01h suspended
  3130.         00h enabled
  3131. SeeAlso: AX=E300h
  3132. ----------2FE306-----------------------------
  3133. INT 2F - ANARKEY.COM v4.0 - GET ???
  3134.     AX = E306h
  3135. Return: AX = ???
  3136. SeeAlso: AX=E300h
  3137. ----------2FE307-----------------------------
  3138. INT 2F - ANARKEY.COM v4.0 - GET ???
  3139.     AX = E307h
  3140. Return: AX = ???
  3141.     BL = ???
  3142. SeeAlso: AX=E300h
  3143. ----------2FE44D-----------------------------
  3144. INT 2F - NDOS - API
  3145.     AX = E44Dh
  3146. Note:    as NDOS is a licensed version of 4DOS v3.03, the API is identical to
  3147.       that for 4DOS, except that AH=E4h instead of D4h and the installation
  3148.       check returns AX=44EEh instead of AX=44DDh
  3149. SeeAlso: AX=D44Dh,AX=E44Eh
  3150. ----------2FE44EBX0000-----------------------
  3151. INT 2F - NDOS - AWAITING USER INPUT
  3152.     AX = E44Eh
  3153.     BX = 0000h NDOS is ready to display prompt
  3154.        = 0001h NDOS has displayed the prompt, about to accept user input
  3155. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  3156. SeeAlso: AX=E44Dh
  3157. ----------2FED00-----------------------------
  3158. INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
  3159.     AX = ED00h
  3160.     BL = DOS extender
  3161.         01h 286dosx v1.3+ (Software Development Kit)
  3162.         02h 286dosx v1.3+ (Run-Time Kit)
  3163.         03h 386dosx v4.0+ (SDK)
  3164.         04h 386dosx v4.0+ (RTK)
  3165. Return: AL = status
  3166.         00h not installed
  3167.         FFh installed
  3168.         SI = 5048h ("PH")
  3169.         DI = 4152h ("AR")
  3170.         CH = major version number
  3171.         CL = minor version number
  3172.         DX = flags
  3173.             bit 0: running under DPMI
  3174.             1: running under Phar Lap VMM
  3175. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
  3176. ----------2FEE00-----------------------------
  3177. INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
  3178.     AX = EE00h
  3179. Return: AL = FFh if installed
  3180. Note:    GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
  3181. ----------2FF000-----------------------------
  3182. INT 2F - 4MAP - INSTALLATION CHECK
  3183.     AX = F000h
  3184. Return: AX = 00FFh
  3185. Notes:    returns AX=00FFh for any value of AL not listed here
  3186.     4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  3187. ----------2FF001-----------------------------
  3188. INT 2F - 4MAP - GET KEY MAPPINGS
  3189.     AX = F001h
  3190. Return: ES:BX -> key mappings
  3191. SeeAlso: AX=F000h
  3192. ----------2FF002-----------------------------
  3193. INT 2F - 4MAP - INSERT CHARACTER INTO ???
  3194.     AX = F002h
  3195.     BL = character to insert
  3196. Return: AX = status
  3197.         0000h successful
  3198.         0001h buffer full
  3199. SeeAlso: AX=F000h,AX=F003h
  3200. ----------2FF003-----------------------------
  3201. INT 2F - 4MAP - INSERT CHARACTER INTO ???
  3202.     AX = F003h
  3203.     BL = character to insert
  3204. Return: AX = status
  3205.         0000h successful
  3206.         0001h buffer full
  3207. SeeAlso: AX=F000h,AX=F002h
  3208. ----------2FF1-------------------------------
  3209. INT 2F - MIN-MEM v2.11 - INSTALLATION CHECK
  3210.     AH = F1h
  3211. Return: AL = F1h if installed
  3212. Note:    MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
  3213.       popup TSRs to be loaded but swapped out to disk, EMS, or XMS.     One
  3214.       TSR at a time is brought back into memory at the user's request.
  3215. ----------2FF100-----------------------------
  3216. INT 2F - DOS EXTENDER INSTALLATION CHECK
  3217.     AX = F100h
  3218. Return: AL = FFh if DOS extender present
  3219.         SI = 444Fh ("DO")
  3220.         DI = 5358h ("SX")
  3221. Note:    supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
  3222. SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  3223. ----------2FF700-----------------------------
  3224. INT 2F - AUTOPARK.COM - INSTALLATION CHECK
  3225.     AX = F700h
  3226. Return: AL = 00h not installed
  3227.          FFh installed
  3228. Note:    AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
  3229. ----------2FF701-----------------------------
  3230. INT 2F - AUTOPARK.COM - SET PARKING DELAY
  3231.     AX = F701h
  3232.     BX:CX = 32-bit count of 55ms timer ticks
  3233. ----------2FFB-------------------------------
  3234. INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
  3235.     AH = FBh
  3236. ----------2FFB42-----------------------------
  3237. INT 2F - Multiplex - Borland DPMI LOADER (DPMILOAD.EXE)
  3238.     AX = FB42h
  3239.     BX = function
  3240.         0001h ???
  3241.         Return: AX = 0001h
  3242.             ES:BX -> ???
  3243.             CX = ???
  3244.             DX = ???
  3245.         0002h ???
  3246.         Call: ES,SI,DI
  3247.         Return: AX = ???
  3248.         0003h get free memory???
  3249.         Return: DX:AX = free memory???
  3250.         0004h ???
  3251.         Return:    CX = ???
  3252.         0005h ???
  3253.         Return: DX = ???
  3254.         0006h ???
  3255.         CX = ???
  3256.         DX = ???
  3257.         Return: DX = ???
  3258.         0007h ???
  3259.         CX = ???
  3260.         Return: ???
  3261.         0008h ???
  3262.         CX = ???
  3263.         DX = ???
  3264.         Return: DX = ???
  3265.         else calls INT 31/AX=0900h
  3266. ----------2FFBA1BX0081-----------------------
  3267. INT 2F - Borland DOS extender (TKERNEL) - INSTALLATION CHECK
  3268.     AX = FBA1h
  3269.     BX = 0081h
  3270.     ES:DI -> 16-byte buffer
  3271. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  3272. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h 
  3273. ----------2FFBA1BX0082-----------------------
  3274. INT 2F - Borland DOS extender (TKERNEL) - GET ENTRY POINT
  3275.     AX = FBA1h
  3276.     BX = 0082h
  3277.     ES:DI -> response buffer (see below)
  3278. Return: ES:DI buffer filled
  3279. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  3280.  
  3281. Format of response buffer:
  3282. Offset    Size    Description
  3283.  00h  4 BYTEs    signature "IABH"
  3284.  04h    DWORD    pointer to FAR extender entry point
  3285.  
  3286. Call entry point with:
  3287.     AX = function number
  3288.         0000h ???
  3289.             STACK: WORD ???
  3290.         Return: ???
  3291.             STACK unchanged
  3292.         0001h get version???
  3293.             Return: AX = 0200h for v2.0.34
  3294.         0002h get ???
  3295.             Return: AX = ??? (011Eh or 0182h seen)
  3296.         0003h ???
  3297.             STACK:    DWORD -> ASCIZ string
  3298.             DWORD    ???
  3299.             DWORD -> counted string
  3300.             DWORD -> ??? (terminated with two consecutive NULs)
  3301.             DWORD -> WORD buffer for ???
  3302.         Return:    ???
  3303.             STACK unchanged
  3304.         0004h ???
  3305.             STACK:    WORD ???
  3306.             WORD ???
  3307.             DWORD -> ???
  3308.         Return: ???
  3309.             STACK unchanged
  3310.         0005h ???
  3311.             STACK:    WORD ???
  3312.             WORD subfunction number???
  3313.         Return: AX = ???
  3314.             STACK unchanged
  3315.         0006h ???
  3316.             STACK:    WORD ???
  3317.             DWORD -> ???
  3318.         Return: AX = ???
  3319.             STACK unchanged
  3320.         0007h unused
  3321.             Return: AX = 0001h
  3322.         0008h unused
  3323.             Return: AX = 0001h
  3324.         0009h ???
  3325.             STACK:  5 WORDs ???
  3326.             DWORD -> ???
  3327.         Return: AX = ???
  3328.             STACK unchanged
  3329.         000Ah ???
  3330.             STACK:  5 WORDs ???
  3331.             DWORD -> ???
  3332.         Return: AX = ???
  3333.             STACK unchanged
  3334.         000Bh get ??? pointers
  3335.             STACK:    WORD desired pointer
  3336.                 0000h get ???
  3337.                 0002h get ???
  3338.                 0003h get ???
  3339.                 else Return: DX:AX = FFFFh:FFFFh
  3340.         Return: DX:AX = requested pointer
  3341.             STACK unchanged
  3342.         000Ch set ??? pointers
  3343.             STACK:    WORD desired pointer
  3344.                 0000h set ???
  3345.                 0002h set ???
  3346.                 0003h set ???
  3347.                 else ignore
  3348.             DWORD new value for pointer
  3349.         Return: STACK unchanged
  3350.         000Dh get ??? pointers
  3351.             STACK:    WORD desired pointer
  3352.                 0000h get ???
  3353.                 0001h get ???
  3354.                 0002h get ???
  3355.                 0003h get ???
  3356.                 0004h get ???
  3357.                 0005h get ???
  3358.                 0006h get ???
  3359.                 0007h get ???
  3360.                 else Return: DX:AX = FFFFh:FFFFh
  3361.         Return: DX:AX = desired pointer
  3362.             STACK unchanged
  3363.            000Eh set ??? pointer
  3364.             STACK:    WORD desired pointer
  3365.                 0000h set ???
  3366.                 0001h set ???
  3367.                 0002h set ???
  3368.                 0003h set ???
  3369.                 0004h set ???
  3370.                 0005h set ???
  3371.                 0006h set ???
  3372.                 0007h set ???
  3373.                 else Return: DX:AX = FFFFh:FFFFh
  3374.         Return: STACK unchanged
  3375.         000Fh get ???
  3376.             Return: AX = ???
  3377.         0010h get ???
  3378.             Return: AX = ???
  3379.         0011h ???
  3380.             STACK:    WORD ???
  3381.         Return: AX = ??? (0000h on error)
  3382.             STACK unchanged
  3383.         0012h ???
  3384.             STACK:    4 WORDs ???
  3385.         Return: DX:AX -> ??? (or 0000h:0000h)
  3386.             STACK unchanged
  3387.         0013h ???
  3388.             Note:    normally jumps to code for function 0012h
  3389.         0014h ???
  3390.             STACK:  5 WORDs ???
  3391.             DWORD -> ???
  3392.         Return: AX = ???
  3393.             STACK unchanged
  3394.         0015h ???
  3395.             STACK:  5 WORDs ???
  3396.             DWORD -> ???
  3397.         Return: AX = ???
  3398.             STACK unchanged
  3399.         0016h ???
  3400.             STACK:    WORD unused ???
  3401.             DWORD -> ??? or 0000h:0000h
  3402.         Return: AX = 0000h
  3403.             STACK unchanged
  3404.         0017h ???
  3405.             STACK:    3 DWORDs ???
  3406.         Return: AX = status???
  3407.             STACK unchanged
  3408.         0018h unused
  3409.             Return: AX = 0001h
  3410.         0019h get ???
  3411.             Return: AX = ??? (00A1h in version examined)
  3412.         001Ah get ???
  3413.             Return: AX = ??? (0148h seen)
  3414.         001Bh program termination???
  3415.             STACK:    2 WORDs ???
  3416.         Return: ???
  3417.             STACK unchanged (if returns)
  3418.         001Ch check ???
  3419.             Return: AX = 0000h if ???, 0001h if not
  3420.         001Dh set ???
  3421.             STACK:    DWORD ???
  3422.         Return: AX,BX destroyed
  3423.             STACK unchanged
  3424.         001Eh ???
  3425.             STACK:    WORD ???
  3426.             DWORD -> ???
  3427.         Return: AX,BX,CX,DX destroyed
  3428.             STACK unchanged
  3429.         001Fh set ???
  3430.             STACK:    WORD ??? (set to 0001h if zero)
  3431.         Return: AX destroyed
  3432.             STACK unchanged
  3433.         0020h ???
  3434.             STACK:    DWORD -> ???
  3435.         Return: ???
  3436.             STACK unchanged
  3437.         0021h ???
  3438.             STACK:    DWORD -> ???
  3439.             WORD    ???
  3440.             WORD    ???
  3441.         0022h ???
  3442.             STACK:    DWORD -> ???
  3443.             DWORD -> ???
  3444.         Return: ???
  3445.             STACK unchanged
  3446.         0023h ???
  3447.             STACK:    DWORD -> ???
  3448.         Return: ???
  3449.             STACK unchanged
  3450.         0024h set ???
  3451.             STACK:    WORD new value for ???
  3452.         Return: AX destroyed
  3453.             STACK unchanged
  3454.         0025h get ???
  3455.             Return: AX = ??? (value set with func 0024h)
  3456.         0026h BUG: jumps to hyperspace due to fencepost error
  3457.         FFFFh set ???
  3458.         BX:SI -> ??? (sets ptr which points at INT 21h/RETF by default)
  3459.         CX:DI -> ??? (sets ptr which points at INT 21h/RETF by default)
  3460.         other Return: AX = 0001h
  3461. Note:    BX may be destroyed by any of the API calls
  3462. ----------2FFBA1BX0084-----------------------
  3463. INT 2F - Borland DOS extender (TKERNEL) - UNINSTALL
  3464.     AX = FBA1h
  3465.     BX = 0084h
  3466.     ES:DI -> response buffer (see below)
  3467. Return: ES:DI buffer filled
  3468. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  3469.  
  3470. Format of response buffer:
  3471. Offset    Size    Description
  3472.  00h  4 BYTEs    signature "IABH"
  3473.  04h    WORD    success indicator
  3474.         0001h failed (INT 2F hooked by another program
  3475.         unchanged if successful
  3476. ----------2FFBFBES0000-----------------------
  3477. INT 2F - SoundBlaster speech driver - INSTALLATION CHECK
  3478.     AX = FBFBh
  3479.     ES = 0000h
  3480. Return: ES nonzero if installed
  3481.         ES:BX -> entry point data structure (see below)
  3482. SeeAlso: INT 80/BX=0000h
  3483.  
  3484. Format of entry point data structure:
  3485. Offset    Size    Description
  3486.  00h  4 BYTEs    ???
  3487.  04h    DWORD    speech driver entry point
  3488.  08h 24 BYTEs    ???
  3489.  20h  ? BYTEs    data buffer for calling speech driver
  3490.  
  3491. Call driver entry point with:
  3492.     AL = function
  3493.         07h speak a string
  3494.             data buffer (see above) contains:
  3495.             BYTE  length of string
  3496.               N BYTEs string to speak
  3497. ----------2FFE00DI4E55-----------------------
  3498. INT 2F - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
  3499.     AX = FE00h
  3500.     DI = 4E55h ("NU")
  3501.     SI = TSR identifier
  3502.         4346h ("CF") NCACHE-F (v5) / NCACHE (v6.0+)
  3503.         4353h ("CS") NCACHE-S (v5 only)
  3504.         4443h ("DC") DISKREET
  3505.         444Dh ("DM") DISKMON
  3506.         4653h ("FS") FILESAVE (v5) / EP (v6.0+)
  3507. Return: SI = TSR reply
  3508.         lowercase version of SI on entry (i.e. SI OR 2020h)
  3509.     AH = status
  3510.         00h installed but disabled internally
  3511.         01h installed and enabled
  3512.     AL = status
  3513.         00h    NCACHE-x or DISKREET installed
  3514.         01h FILESAVE / EP / DISKMON v6 installed
  3515.         45h    DISKMON v5 installed
  3516.     BX = length of *.INI file (DISKMON and FILESAVE/EP only) (see below)
  3517.     CX = segment of resident portion
  3518.         FFFFh if completely loaded high (NCACHE)
  3519. ---FILESAVE/EP---
  3520.     DL = ??? (apparently always 00h)
  3521. ---DISKMON---
  3522.     DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6])
  3523. Note:    the value returned in CX is incorrect for NCACHE 6.00
  3524. SeeAlso: AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
  3525.  
  3526. Format of DISKMON.INI file:
  3527. Offset    Size    Description
  3528. -6Ch 108 BYTEs    (in memory copy only)
  3529.         list of filenames which are always protected:
  3530.           IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
  3531.           MIO.SYS/IO.BIN, COMMAND.COM
  3532.  00h    BYTE    ??? always 01h
  3533.  01h    BYTE    disk light (00h off, 01h on)
  3534.  02h    BYTE    disk protection (00h off, 01h on)
  3535.  03h    BYTE    protected areas
  3536.         01h system area
  3537.         02h files
  3538.         03h system area and files
  3539.         04h entire disk
  3540.  04h    BYTE    floppy access (00h not allowed, 01h allowed)
  3541.  05h 27 BYTEs    filename extension list (9 entries)
  3542.         (lowercase, blank padded or = 000000h)
  3543.  20h 240 BYTEs    filename list (20 entries)
  3544.         (lowercase, name and extension blank padded, with '.')
  3545. Note:    CX:0508h -> copy in installed TSR (v5)
  3546.     CX:052Fh -> copy in installed TSR (v6)
  3547.  
  3548. Format of FILESAVE.INI / EP.INI file:
  3549. Offset    Size    Description
  3550.  00h 26 BITs    drive list (bit set: file protection on, cleared: off):
  3551.  00h    BYTE    drives    A: - H:
  3552.  01h    BYTE    drives    I: - P:
  3553.  02h    BYTE    drives    Q: - X:
  3554.  03h    BYTE    drives    Y: - Z:
  3555.  04h    BYTE    which files to protect
  3556.         00h all files
  3557.         01h all files with extension in list
  3558.         02h all files except those with extension in list
  3559.  05h 27 BYTEs    filename extension list (9 entries, uppercase, ASCIZ)
  3560.  20h    BYTE    include files with archive bit clear (00h no, 01h yes)
  3561.  21h    WORD    number of days after which files are purged (0 = never)
  3562.  23h    WORD    max kilobytes of erased file space to hold (0 = all)
  3563. Note:    CX:03D2h -> copy in installed TSR (v5.0)
  3564.     CX:03F5h -> copy in installed TSR (v6.0)
  3565. ----------2FFE01DI4E55-----------------------
  3566. INT 2F - NORTON UTILITIES 5.0+ TSRs - ENABLE
  3567.     AX = FE01h
  3568.     DI = 4E55h ("NU")
  3569.     SI = TSR identifier (see AX=FE00h)
  3570. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  3571.     AX = status
  3572.         0002h successful (DISKMON, FILESAVE, EP)
  3573.         FE00h successful (NCACHE-x, DISKREET)
  3574. Notes:    if the enable/disable calls are used on DISKMON or NCACHE-x, the status
  3575.       report generated by the programs still indicates the previous state,
  3576.       and DISKMON.INI is not updated
  3577.     apparently has no effect on DISKREET
  3578. SeeAlso: AX=FE00h,AX=FE02h
  3579. ----------2FFE02DI4E55-----------------------
  3580. INT 2F - NORTON UTILITIES 5.0+ TSRs - DISABLE
  3581.     AX = FE02h
  3582.     DI = 4E55h ("NU")
  3583.     SI = TSR identifier (see AX=FE00h)
  3584. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  3585.     AX = status
  3586.         0004h successful (DISKMON, FILESAVE)
  3587.         FE00h successful (NCACHE-x, DISKREET)
  3588. Note:    (see AX=FE01h)
  3589. SeeAlso: AX=FE00h,AX=FE01h
  3590. ----------2FFE03DI4E55-----------------------
  3591. INT 2F - NORTON UTILITIES 5.0+ TSRs - internal - ???
  3592.     AX = FE03h
  3593.     DI = 4E55h ("NU")
  3594.     SI = TSR identifier (see AX=FE00h)
  3595. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  3596.     AX = status
  3597.         0006h successful???
  3598. Notes:    only supported by DISKMON, FILESAVE, and NCACHE-x
  3599.     reportedly dangerous
  3600. SeeAlso: AX=FE00h
  3601. ----------2FFE04DI4E55-----------------------
  3602. INT 2F - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  3603.     AX = FE04h
  3604.     DI = 4E55h ("NU")
  3605.     SI = TSR identifier (see AX=FE00h)
  3606. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  3607.     AX = status
  3608.         0008h successful???
  3609. SeeAlso: AX=FE00h
  3610. ----------2FFE05DI4E55-----------------------
  3611. INT 2F - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  3612.     AX = FE05h
  3613.     DI = 4E55h ("NU")
  3614.     SI = TSR identifier (see AX=FE00h)
  3615. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  3616.     AX = status
  3617.         000Ah successful???
  3618. Note:    reportedly dangerous
  3619. SeeAlso: AX=FE00h
  3620. ----------2FFF00-----------------------------
  3621. INT 2F - Topware Network Operating System - INSTALLATION CHECK
  3622.     AX = FF00h
  3623. Return: AL = 00h not installed, OK to install
  3624.        = 01h not installed, not OK to install
  3625.        = FFh installed
  3626. SeeAlso: AX=FF01h,INT 21/AH=FFh"Topware",INT 7A"Topware"
  3627. ----------2FFF01-----------------------------
  3628. INT 2F - Topware Network Operating System - GET VERSION
  3629.     AX = FF01h
  3630. Return: AX = version
  3631. SeeAlso: AX=FF00h
  3632. ----------30---------------------------------
  3633. INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
  3634.    the CALL 5 entry point does a FAR jump to here
  3635. Note:    under DOS 2+, the instruction at PSP:0005 points two bytes too low in
  3636.       memory
  3637. SeeAlso: INT 21/AH=26h
  3638. ----------31---------------------------------
  3639. INT 31 - overwritten by CP/M jump instruction in INT 30
  3640. ----------310000-----------------------------
  3641. INT 31 - DOS Prot-Mode Interface 0.9+ - protected mode - ALLOCATE LDT DESCRPTRS
  3642.     AX = 0000h
  3643.     CX = number of descriptors to allocate
  3644. Return: CF clear if successful
  3645.         AX = base selector
  3646.     CF set on error
  3647.         AX = error code (DPMI 1.0+)
  3648.         0000h-7FFFh DOS error passed through by DPMI
  3649.         8001h unsupported function
  3650.         8002h object in wrong state for function
  3651.         8003h system integrity would be endangered
  3652.         8004h deadlock detected
  3653.         8005h pending serialization request cancelled
  3654.         8010h out of DPMI internal resources
  3655.         8011h descriptor unavailable
  3656.         8012h linear memory unavailable
  3657.         8013h physical memory unavailable
  3658.         8014h backing store unavailable
  3659.         8015h callback unavailable
  3660.         8016h handle unavailable
  3661.         8017h maximum lock count exceeded
  3662.         8018h shared memory already serialized exclusively by another
  3663.         8019h shared memory already serialized shared by another client
  3664.         8021h invalid value for numeric or flag parameter
  3665.         8022h invalid segment selector
  3666.         8023h invalid handle
  3667.         8024h invalid callback
  3668.         8025h invalid linear address
  3669.         8026h request not supported by hardware
  3670. Notes:    the base and limit of the returned descriptors will be 0, and the type
  3671.       will be "data"
  3672.     add the value returned by INT 31/AX=0003h to move to subsequent
  3673.       descriptors if multiple descriptors were allocated
  3674.     not supported by MS Windows 3.0 in Standard mode
  3675. SeeAlso: AX=0001h,AX=000Dh
  3676. ----------310001-----------------------------
  3677. INT 31 - DPMI 0.9+ - protected mode - FREE LDT DESCRIPTOR
  3678.     AX = 0001h
  3679.     BX = selector to free
  3680. Return: CF clear if successful
  3681.     CF set on error
  3682.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  3683. Notes:    only one descriptor is freed per call
  3684.     the program's initial CS, DS, and SS descriptors may be freed
  3685.     (DPMI 1.0+) any segment registers containing the freed selector are
  3686.       set to 0000h
  3687.     not supported by MS Windows 3.0 in Standard mode
  3688. SeeAlso: AX=0000h,AX=000Ah,AX=000Dh
  3689. ----------310002-----------------------------
  3690. INT 31 - DPMI 0.9+ - protected mode - SEGMENT TO DESCRIPTOR
  3691.     AX = 0002h
  3692.     BX = real mode segment
  3693. Return: CF clear if successful
  3694.         AX = selector corresponding to real mode segment (64K limit)
  3695.     CF set on error
  3696.         AX = error code (DPMI 1.0+) (8011h) (see AX=0000h)
  3697. Notes:    multiple calls for the same real mode segment return the same selector
  3698.     the returned descriptor can never be modified or freed
  3699.     not supported by MS Windows 3.0 in Standard mode
  3700. ----------310003-----------------------------
  3701. INT 31 - DPMI 0.9+ - protected mode - GET NEXT SELECTOR INCREMENT VALUE
  3702.     AX = 0003h
  3703. Return: CF clear
  3704.         AX = value to add to get next sequential selector
  3705. Notes:    the increment will be a power of two
  3706.     not supported by MS Windows 3.0 in Standard mode
  3707. SeeAlso: AX=0000h
  3708. ----------310004-----------------------------
  3709. INT 31 - DPMI 0.9+ - protected mode - LOCK SELECTOR
  3710.     AX = 0004h
  3711.     BX = selector to lock (prevent paging)
  3712. Return: ???
  3713. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  3714.       specification, this function is called by MS Windows TASKMAN,
  3715.       PROGMAN, and KERNEL
  3716. SeeAlso: AX=0005h,AX=0600h
  3717. ----------310005-----------------------------
  3718. INT 31 - DPMI 0.9+ - protected mode - UNLOCK SELECTOR
  3719.     AX = 0005h
  3720.     BX = selector to unlock (permit paging)
  3721. Return: ???
  3722. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  3723.       specification, this function is called by MS Windows TASKMAN,
  3724.       PROGMAN, and KERNEL
  3725. SeeAlso: AX=0004h,AX=0601h
  3726. ----------310006-----------------------------
  3727. INT 31 - DPMI 0.9+ - protected mode - GET SEGMENT BASE ADDRESS
  3728.     AX = 0006h
  3729.     BX = selector
  3730. Return: CF clear if successful
  3731.         CX:DX = linear base address of segment
  3732.     CF set on error
  3733.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  3734. Note:    not supported by MS Windows 3.0 in Standard mode
  3735. SeeAlso: AX=0007h
  3736. ----------310007-----------------------------
  3737. INT 31 - DPMI 0.9+ - protected mode - SET SEGMENT BASE ADDRESS
  3738.     AX = 0007h
  3739.     BX = selector
  3740.     CX:DX = linear base address
  3741. Return: CF clear if successful
  3742.     CF set on error
  3743.         AX = error code (DPMI 1.0+) (8022h,8025h) (see AX=0000h)
  3744. Notes:    only modify descriptors allocated with INT 31/AX=0000h
  3745.     only the low 24 bits of the address will be used by 16-bit DPMI
  3746.       implementations even on a 386 or higher
  3747.     DPMI 1.0+ automatically reloads any segment registers containing the
  3748.       selector being modified
  3749.     not supported by MS Windows 3.0 in Standard mode
  3750. SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AH=E9h"OS/286"
  3751. ----------310008-----------------------------
  3752. INT 31 - DPMI 0.9+ - protected mode - SET SEGMENT LIMIT
  3753.     AX = 0008h
  3754.     BX = selector
  3755.     CX:DX = segment limit
  3756. Return: CF clear if successful
  3757.     CF set on error
  3758.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
  3759. Notes:    CX must be zero for 16-bit DPMI implementations
  3760.     limits greater than 1MB must be page aligned (low 12 bits set)
  3761.     only modify descriptors allocated with INT 31/AX=0000h
  3762.     DPMI 1.0+ automatically reloads any segment registers containing the
  3763.       selector being modified
  3764.     not supported by MS Windows 3.0 in Standard mode
  3765. SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AH=E9h"OS/286"
  3766. ----------310009-----------------------------
  3767. INT 31 - DPMI 0.9+ - protected mode - SET DESCRIPTOR ACCESS RIGHTS
  3768.     AX = 0009h
  3769.     BX = selector
  3770.     CL = access rights/type byte
  3771.     CH = 80386 extended rights/type byte (32-bit DPMI implementations only)
  3772. Return: CF clear if successful
  3773.     CF set on error
  3774.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
  3775. Notes:    if the Present bit is clear, CL bits 0-3 may have any value
  3776.     DPMI 1.0+ automatically reloads any segment registers containing the
  3777.       selector being modified
  3778.     not supported by MS Windows 3.0 in Standard mode
  3779. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h
  3780. ----------31000A-----------------------------
  3781. INT 31 - DPMI 0.9+ - protected mode - CREATE ALIAS DESCRIPTOR
  3782.     AX = 000Ah
  3783.     BX = selector
  3784. Return: CF clear if successful
  3785.         AX = new data selector
  3786.     CF set on error
  3787.         AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
  3788. Notes:    fails if selector in BX is not a code segment or is invalid
  3789.     use INT 31/AX=0001h to free new selector
  3790.     future changes to the original selector will not be reflected in the
  3791.       returned alias selector
  3792.     not supported by MS Windows 3.0 in Standard mode
  3793. SeeAlso: AX=0001h
  3794. ----------31000B-----------------------------
  3795. INT 31 - DPMI 0.9+ - protected mode - GET DESCRIPTOR
  3796.     AX = 000Bh
  3797.     BX = LDT selector
  3798.     ES:(E)DI -> 8-byte buffer for copy of descriptor
  3799. Return: CF clear if successful
  3800.         buffer filled
  3801.     CF set on error
  3802.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  3803. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  3804.     not supported by MS Windows 3.0 in Standard mode
  3805. SeeAlso: AX=000Ch
  3806. ----------31000C-----------------------------
  3807. INT 31 - DPMI 0.9+ - protected mode - SET DESCRIPTOR
  3808.     AX = 000Ch
  3809.     BX = LDT selector
  3810.     ES:(E)DI -> 8-byte buffer containing descriptor
  3811. Return:    CF clear if successful
  3812.     CF set on error
  3813.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
  3814. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  3815.     only modify descriptors allocated with INT 31/AX=0000h
  3816.     DPMI 1.0+ automatically reloads any segment registers containing the
  3817.       selector being modified
  3818.     not supported by MS Windows 3.0 in Standard mode
  3819. SeeAlso: AX=000Bh
  3820. ----------31000D-----------------------------
  3821. INT 31 - DPMI 0.9+ - protected mode - ALLOCATE SPECIFIC LDT DESCRIPTOR
  3822.     AX = 000Dh
  3823.     BX = LDT selector
  3824. Return: CF clear if successful
  3825.         descriptor allocated
  3826.     CF set on error
  3827.         AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
  3828. Notes:    free descriptor with INT 31/AX=0001h
  3829.     the first 16 descriptors (04h-7Ch) are reserved for this function, but
  3830.       some may already be in use by other applications under DPMI 0.9;
  3831.       DPMI 1.0 guarantees 16 descriptors per client
  3832.     not supported by MS Windows 3.0 in Standard mode
  3833. SeeAlso: AX=0000h,AX=0001h
  3834. ----------31000E-----------------------------
  3835. INT 31 - DPMI 1.0+ - protected mode - GET MULTIPLE DESCRIPTORS
  3836.     AX = 000Eh
  3837.     CX = number of descriptors to copy
  3838.     ES:(E)DI -> descriptor buffer (see below)
  3839. Return: CF clear if successful
  3840.         descriptors copied
  3841.     CF set on error
  3842.         AX = error code (8022h) (see AX=0000h)
  3843.         CX = number of descriptors successfully copied
  3844. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  3845.     if the function fails, the first CX descriptors are valid; the
  3846.       remainder are not modified
  3847. SeeAlso: AX=000Bh,AX=000Fh
  3848.  
  3849. Format of descriptor buffer entry (one per descriptor to get):
  3850. Offset    Size    Description
  3851.  00h    WORD    selector (set by client)
  3852.  02h    QWORD    descriptor (set by host)
  3853. ----------31000F-----------------------------
  3854. INT 31 - DPMI 1.0+ - protected mode - SET MULTIPLE DESCRIPTORS
  3855.     AX = 000Fh
  3856.     CX = number of descriptors to copy
  3857.     ES:(E)DI -> descriptor buffer (see below)
  3858. Return: CF clear if successful
  3859.         descriptors copied
  3860.     CF set on error
  3861.         AX = error code (8021h,8022h,8025h) (see AX=0000h)
  3862.         CX = number of descriptors successfully copied
  3863. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  3864.     if the function fails, the first CX descriptors are valid; the
  3865.       remainder are not modified
  3866.     DPMI 1.0+ automatically reloads any segment registers containing a
  3867.       selector being modified
  3868. SeeAlso: AX=000Ch,AX=000Eh
  3869.  
  3870. Format of descriptor buffer entry (one per descriptor to set):
  3871. Offset    Size    Description
  3872.  00h    WORD    selector
  3873.  02h    QWORD    descriptor
  3874. ----------310100-----------------------------
  3875. INT 31 - DPMI 0.9+ - protected mode - ALLOCATE DOS MEMORY BLOCK
  3876.     AX = 0100h
  3877.     BX = number of paragraphs to allocate
  3878. Return: CF clear if successful
  3879.         AX = real mode segment of allocated block
  3880.         DX = first selector for allocated block
  3881.     CF set on error
  3882.         AX = DOS error code (07h,08h) (see INT 21/AH=59h)
  3883.          (DPMI 1.0+) DPMI error code (8011h) (see AX=0000h)
  3884.         BX = size (in paragraphs) of largest available block
  3885. Notes:    multiple contiguous selectors are allocated for blocks of more than 64K
  3886.       if the caller is a 16-bit program
  3887.     never modify or deallocate returned descriptors
  3888.     not supported by MS Windows 3.0 in Standard mode
  3889. SeeAlso: AX=0101h,AX=0501h
  3890. ----------310101-----------------------------
  3891. INT 31 - DPMI 0.9+ - protected mode - FREE DOS MEMORY BLOCK
  3892.     AX = 0101h
  3893.     DX = selector of block
  3894. Return: CF set if successful
  3895.     CF set on error
  3896.         AX = DOS error code (07h,09h) (see INT 21/AH=59h)
  3897. Notes:    all descriptors allocated for the block are automatically freed
  3898.     DPMI 1.0+ automatically zeros any segment registers containing a
  3899.       selector freed by this function
  3900.     not supported by MS Windows 3.0 in Standard mode
  3901. SeeAlso: AX=0100h,AX=0102h,AX=0502h
  3902. ----------310102-----------------------------
  3903. INT 31 - DPMI 0.9+ - protected mode - RESIZE DOS MEMORY BLOCK
  3904.     AX = 0102h
  3905.     BX = new block size in paragraphs
  3906.     DX = selector of block
  3907. Return: CF clear if successful
  3908.     CF set on error
  3909.         AX = DOS error code (07h,08h,09h) (see INT 21/AH=59h)
  3910.          (DPMI 1.0+) DPMI error code (8011h,8022h) (see AX=0000h)
  3911.         BX = maximum block size (in paragraphs) possible
  3912. Notes:    increasing the size of a block past a 64K boundary will fail if the
  3913.       next descriptor in the LDT is already in use
  3914.     shrinking a block past a 64K boundary will cause some selectors to be
  3915.       freed; DPMI 1.0+ automatically zeros any segment registers containing
  3916.       a selector freed by this function
  3917.     not supported by MS Windows 3.0 in Standard mode
  3918. SeeAlso: AX=0100h
  3919. ----------310200-----------------------------
  3920. INT 31 - DPMI 0.9+ - protected mode - GET REAL MODE INTERRUPT VECTOR
  3921.     AX = 0200h
  3922.     BL = interrupt number
  3923. Return: CF clear
  3924.     CX:DX = segment:offset of real mode interrupt handler
  3925. Note:    the DPMI implementation is required to support all 256 vectors
  3926. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
  3927. ----------310201-----------------------------
  3928. INT 31 - DPMI 0.9+ - protected mode - SET REAL MODE INTERRUPT VECTOR
  3929.     AX = 0201h
  3930.     BL = interrupt number
  3931.     CX:DX = segment:offset of real mode handler
  3932. Return: CF clear
  3933. Note:    all memory that may be touched by a hardware interrupt handler must be
  3934.       locked down with INT 31/AX=0600h    
  3935. SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
  3936. ----------310202-----------------------------
  3937. INT 31 - DPMI 0.9+ - protected mode - GET PROCESSOR EXCEPTION HANDLER VECTOR
  3938.     AX = 0202h
  3939.     BL = exception number (00h-1Fh)
  3940. Return:    CF clear if successful
  3941.         CX:(E)DX = selector:offset of handler
  3942.     CF set on error
  3943.         AX = error code (DPMI 1.0+) (8021h) (see AX=0000h)
  3944. Notes:    16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
  3945.     DPMI 1.0+ supports this function only for backward compatibility; use
  3946.        AX=0210h or AX=0211h instead
  3947.     not supported by MS Windows 3.0 in Standard mode
  3948. SeeAlso: AX=0203h,AX=0210h,AX=0211h
  3949. ----------310203-----------------------------
  3950. INT 31 - DPMI 0.9+ - protected mode - SET PROCESSOR EXCEPTION HANDLER VECTOR
  3951.     AX = 0203h
  3952.     BL = exception number (00h-1Fh)
  3953.     CX:(E)DX = selector:offset of handler
  3954. Return: CF clear if successful
  3955.     CF set on error
  3956.         AX = error code (DPMI 1.0+) (8021h,8022h) (see AX=0000h)
  3957. Notes:    32-bit programs must supply an offset in EDX and use a 32-bit interrupt
  3958.       stack frame on chaining to the next exception handler
  3959.     the handler should return using a FAR return
  3960.     all fault stack frames contain an error code, but it is only valid for
  3961.       exceptions 08h and 0Ah-0Eh
  3962.     handlers will only be called if the exception occurs in protected mode,
  3963.       and the DPMI host does not transparently handle the exception
  3964.     the handler may change certain values on the stack frame (see below)
  3965.     DPMI 1.0+ supports this function only for backward compatibility; use
  3966.        AX=0212h or AX=0213h instead
  3967.     not supported by MS Windows 3.0 in Standard mode
  3968. SeeAlso: AX=0202h,AX=0212h,AX=0213h
  3969.  
  3970. Format of stack frame for 16-bit programs: (offset from SS:SP)
  3971. Offset    Size    Description
  3972.  00h    DWORD    return CS:IP (do not change)
  3973.  04h    WORD    error code
  3974.  06h    DWORD    CS:IP of exception
  3975.  0Ah    WORD    flags
  3976.  0Ch    DWORD    SS:SP
  3977.  
  3978. Format of stack frame for 32-bit programs: (offset from SS:ESP)
  3979. Offset    Size    Description
  3980.  00h    DWORD    return EIP (do not change)
  3981.  04h    WORD    return CS selector (do not change)
  3982.  06h    WORD    reserved (do not change)
  3983.  08h    DWORD    error code
  3984.  0Ch    DWORD    EIP of exception
  3985.  10h    WORD    CS selector of exception
  3986.  12h    WORD    reserved (do not change)
  3987.  14h    DWORD    EFLAGS
  3988.  18h    DWORD    ESP
  3989.  1Ch    WORD    SS
  3990.  1Eh    WORD    reserved (do not change)
  3991. ----------310204-----------------------------
  3992. INT 31 - DPMI 0.9+ - protected mode - GET PROTECTED MODE INTERRUPT VECTOR
  3993.     AX = 0204h
  3994.     BL = interrupt number
  3995. Return:    CF clear
  3996.     CX:(E)DX = selector:offset of handler
  3997. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  3998.     DPMI implementations are required to support all 256 vectors
  3999.     not supported by MS Windows 3.0 in Standard mode
  4000. SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h
  4001. ----------310205-----------------------------
  4002. INT 31 - DPMI 0.9+ - protected mode - SET PROTECTED MODE INTERRUPT VECTOR
  4003.     AX = 0205h
  4004.     BL = interrupt number
  4005.     CX:(E)DX = selector:offset of handler
  4006. Return: CF clear if successful
  4007.     CF set on error
  4008.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  4009. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  4010.     32-bit programs must use a 32-bit interrupt stack frame when chaining
  4011.       to the next handler
  4012.     DPMI implementations are required to support all 256 vectors
  4013.     hardware interrupts are reflected to the virtual machine's primary
  4014.       client, software interrupts to the current client
  4015.     not supported by MS Windows 3.0 in Standard mode
  4016. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h
  4017. ----------310210-----------------------------
  4018. INT 31 - DPMI 1.0+ - prot mode - GET PROTMODE EXT PROCESSOR EXCEPTION HANDLER
  4019.     AX = 0210h
  4020.     BL = exception number (00h-1Fh)
  4021. Return: CF clear if successful
  4022.         CX:(EDX) = selector:offset of exception handler
  4023.     CF set on error
  4024.         AX = error code (8021h) (see AX=0000h)
  4025. Note:    DPMI host reflects exception to current client's handler
  4026. SeeAlso: AX=0202h,AX=0211h,AX=0212h
  4027. ----------310211-----------------------------
  4028. INT 31 - DPMI 1.0+ - prot mode - GET REALMODE EXT PROCESSOR EXCEPTION HANDLER
  4029.     AX = 0211h
  4030.     BL = exception number (00h-1Fh)
  4031. Return: CF clear if successful
  4032.         CX:(EDX) = selector:offset of exception handler
  4033.     CF set on error
  4034.         AX = error code (8021h) (see AX=0000h)
  4035. Notes:    returns address of protected-mode handler for real-mode exception
  4036.     DPMI host performs a switch to protected mode, reflects the exception
  4037.       to the virtual machine's primary client, and returns to real mode
  4038.       on the handler's completion
  4039. SeeAlso: AX=0202h,AX=0210h,AX=0213h
  4040. ----------310212-----------------------------
  4041. INT 31 - DPMI 1.0+ - prot mode - SET PROTMODE EXT PROCESSOR EXCEPTION HANDLER
  4042.     AX = 0212h
  4043.     BL = exception or fault number (00h-1Fh)
  4044.     CX:(E)DX = exception handler selector:offset
  4045. Return: CF clear if successful
  4046.     CF set on error
  4047.         AX = error code (8021h,8022h) (see AX=0000h)
  4048. Note:    DPMI host sends exception to current client's handler
  4049. SeeAlso: AX=0203h,AX=0210h,AX=0213h
  4050. ----------310213-----------------------------
  4051. INT 31 - DPMI 1.0+ - prot mode - SET REALMODE EXT PROCESSOR EXCEPTION HANDLER
  4052.     AX = 0213h
  4053.     BL = exception or fault number (00h-1Fh)
  4054.     CX:(E)DX = exception handler selector:offset
  4055. Return: CF clear if successful
  4056.     CF set on error
  4057.         AX = error code (8021h,8022h) (see AX=0000h)
  4058. Notes:    specifies address of protected-mode handler for real-mode exception
  4059.     DPMI host performs a switch to protected mode, reflects the exception
  4060.       to the virtual machine's primary client, and returns to real mode
  4061.       on the handler's completion
  4062. SeeAlso: AX=0203h,AX=0211h,AX=0212h
  4063. ----------310300-----------------------------
  4064. INT 31 - DPMI 0.9+ - protected mode - SIMULATE REAL MODE INTERRUPT
  4065.     AX = 0300h
  4066.     BL = interrupt number
  4067.     BH = flags
  4068.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  4069.            reserved, must be 0 (DPMI 1.0+)
  4070.         others must be 0
  4071.     CX = number of words to copy from protected mode to real mode stack
  4072.     ES:(E)DI = selector:offset of real mode call structure (see below)
  4073. Return:    CF clear if successful
  4074.         real mode call structure modified (all fields except SS:SP, CS:IP
  4075.           filled with return values from real mode interrupt)
  4076.     CF set on error
  4077.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
  4078.     protected mode stack unchanged
  4079. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  4080.     CS:IP in the real mode call structure is ignored for this call,
  4081.       instead, the indicated interrupt vector is used for the address
  4082.     the flags in the call structure are pushed on the real mode stack to
  4083.       form an interrupt stack frame, and the trace and interrupt flags are
  4084.       clear on entry to the handler
  4085.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  4086.     the real mode handler must return with the stack in the same state as
  4087.       it was on being called
  4088. SeeAlso: AX=0302h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286"
  4089.  
  4090. Format of real mode call structure:
  4091. Offset    Size    Description
  4092.  00h    DWORD    EDI
  4093.  04h    DWORD    ESI
  4094.  08h    DWORD    EBP
  4095.  0Ch    DWORD    reserved (00h)
  4096.  10h    DWORD    EBX
  4097.  14h    DWORD    EDX
  4098.  18h    DWORD    ECX
  4099.  1Ch    DWORD    EAX
  4100.  20h    WORD    flags
  4101.  22h    WORD    ES
  4102.  24h    WORD    DS
  4103.  26h    WORD    FS
  4104.  28h    WORD    GS
  4105.  2Ah    WORD    IP
  4106.  2Ch    WORD    CS
  4107.  2Eh    WORD    SP
  4108.  30h    WORD    SS
  4109. ----------310301-----------------------------
  4110. INT 31 - DPMI 0.9+ - prot mode - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
  4111.     AX = 0301h
  4112.     BH = flags
  4113.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  4114.            reserved, must be 0 (DPMI 1.0+)
  4115.         others must be 0
  4116.     CX = number of words to copy from protected mode to real mode stack
  4117.     ES:DI / ES:EDI = selector:offset of real mode call structure
  4118.             (see INT 31/AX=0300h)
  4119. Return: CF clear if successful
  4120.         real mode call structure modified (all fields except SS:SP, CS:IP
  4121.           filled with return values from real mode interrupt)
  4122.     CF set on error
  4123.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
  4124.     protected mode stack unchanged
  4125. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  4126.     the real mode procedure must exit with a FAR return
  4127.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  4128.     the real mode handler must return with the stack in the same state as
  4129.       it was on being called
  4130. SeeAlso: AX=0300h,AX=0302h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
  4131. ----------310302-----------------------------
  4132. INT 31 - DPMI 0.9+ - protected mode - CALL REAL MODE PROCEDURE WITH IRET FRAME
  4133.     AX = 0302h
  4134.     BH = flags
  4135.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  4136.            reserved, must be 0 (DPMI 1.0+)
  4137.         others must be 0
  4138.     CX = number of words to copy from protected mode to real mode stack
  4139.     ES:DI / ES:EDI = selector:offset of real mode call structure
  4140.             (see INT 31/AX=0300h)
  4141. Return:    CF clear if successful
  4142.         real mode call structure modified (all fields except SS:SP, CS:IP
  4143.           filled with return values from real mode interrupt)
  4144.     CF set on error
  4145.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
  4146.     protected mode stack unchanged
  4147. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  4148.     the flags in the call structure are pushed on the real mode stack to
  4149.       form an interrupt stack frame, and the trace and interrupt flags are
  4150.       clear on entry to the handler
  4151.     the real mode procedure must exit with an IRET
  4152.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  4153.     the real mode handler must return with the stack in the same state as
  4154.       it was on being called
  4155. SeeAlso: AX=0300h
  4156. ----------310303-----------------------------
  4157. INT 31 - DPMI 0.9+ - protected mode - ALLOCATE REAL MODE CALLBACK ADDRESS
  4158.     AX = 0303h
  4159.     DS:SI / DS:ESI = selector:offset of procedure to call
  4160.     ES:DI / ES:EDI = selector:offset of real mode call structure
  4161.             (see AX=0300h)
  4162. Return: CF clear if successful
  4163.         CX:DX = segment:offset of real mode call address
  4164.     CF set on error
  4165.         AX = error code (DPMI 1.0+) (8015h) (see AX=0000h)
  4166. Notes:    the real mode call structure is static, causing reentrancy problems;
  4167.       its contents are only valid at the time of a callback
  4168.     the called procedure must modify the real mode CS:IP before returning
  4169.     values are returned to real mode by modifying the real mode call struc
  4170.     DPMI hosts must provide at least 16 callbacks per client
  4171. SeeAlso: AX=0304h,AX=0C00h
  4172.  
  4173. Values callback procedure is called with:
  4174.     DS:SI / DS:ESI = selector:offset of real mode SS:SP
  4175.     ES:DI / ES:EDI = selector:offset of real mode call structure
  4176.     SS:SP / SS:ESP = locked protected mode API stack
  4177.     interrupts disabled
  4178. Return: (with IRET)
  4179.     ES:DI / ES:EDI = selector:offset of real mode call structure to restore
  4180. ----------310304-----------------------------
  4181. INT 31 - DPMI 0.9+ - protected mode - FREE REAL MODE CALLBACK ADDRESS
  4182.     AX = 0304h
  4183.     CX:DX = real mode callback address
  4184. Return: CF clear if successful
  4185.     CF set on error
  4186.         AX = error code (DPMI 1.0+) (8024h) (see AX=0000h)
  4187. SeeAlso: AX=0303h
  4188. ----------310305-----------------------------
  4189. INT 31 - DPMI 0.9+ - protected mode - GET STATE SAVE/RESTORE ADDRESSES
  4190.     AX = 0305h
  4191. Return: CF clear
  4192.     AX = size in bytes of state buffer
  4193.     BX:CX = real mode address of procedure to save/restore state
  4194.     SI:DI / SI:EDI = protected mode procedure to save/restore state
  4195. Notes:    the buffer size will be zero if it is not necessary to preserve state
  4196.     16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
  4197.     this function is only needed if using the raw mode switch service
  4198. SeeAlso: AX=0306h
  4199.  
  4200. Values to call state-save procedures with:
  4201.     AL = direction
  4202.         00h save state
  4203.         01h restore state
  4204.     ES:DI / ES:EDI -> state buffer
  4205. Return: all registers preserved
  4206. ----------310306-----------------------------
  4207. INT 31 - DPMI 0.9+ - protected mode - GET RAW MODE SWITCH ADDRESSES
  4208.     AX = 0306h
  4209. Return:    CF clear
  4210.     BX:CX -> procedure to switch from real to protected mode
  4211.     SI:DI / SI:EDI -> procedure to switch from protected to real mode
  4212. Notes:    16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
  4213.     the caller must save and restore the state of the task with AX=0305h
  4214.     not supported by MS Windows 3.0 in Standard mode
  4215. SeeAlso: AX=0305h
  4216.  
  4217. Values to JUMP at mode-switch procedures with:
  4218.     AX = new DS
  4219.     CX = new ES
  4220.     DX = new SS
  4221.     BX / EBX = new SP / ESP
  4222.     SI = new CS
  4223.     DI / EDI = new IP / EIP
  4224. Notes:    BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
  4225.       DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
  4226.     interrupts will stay disabled during the entire mode switch if they
  4227.       are disabled on entry to the mode-switch procedure
  4228. ----------310400-----------------------------
  4229. INT 31 - DPMI 0.9+ - protected mode - GET DPMI VERSION
  4230.     AX = 0400h
  4231. Return: CF clear
  4232.     AH = major version of DPMI spec supported
  4233.     AL = two-digit minor version of DPMI spec supported
  4234.     BX = flags
  4235.         bit 0: running under an 80386 (32-bit) implementation
  4236.         bit 1: processor returns to real mode for reflected interrupts
  4237.            instead of V86 mode
  4238.         bit 2: virtual memory supported
  4239.         bit 3: reserved (undefined)
  4240.         others reserved (zero)
  4241.     CL = processor type (02h=80286, 03h=80386, 04h=80486)
  4242.     DH = curr value of virtual master interrupt controller base interrupt
  4243.     DL = curr value of virtual slave interrupt controller base interrupt
  4244. SeeAlso: AX=0401h,INT 21/AX=250Ch
  4245. ----------310401-----------------------------
  4246. INT 31 - DPMI 1.0+ - protected mode - GET DPMI CAPABILITIES
  4247.     AX = 0401h
  4248.     ES:(E)DI -> 128-byte buffer (see below)
  4249. Return: CF clear if successful
  4250.         AX = capabilities
  4251.         bit 0: paged accessed/dirty supported (see AX=0506h,AX=0507h)
  4252.             1: exceptions restartability supported
  4253.             2: device mapping supported (see AX=0508h)
  4254.             3: conventional memory mapping supported (see AX=0509h)
  4255.             4: demand zero-fill supported
  4256.             5: write-protect client capability supported
  4257.             6: write-protect host capability supported
  4258.             7-15: reserved
  4259.         CX = reserved (00h)
  4260.         DX = reserved (00h)
  4261.         buffer filled
  4262.     CF set on error (DPMI 0.9 only)
  4263. SeeAlso: AX=0400h
  4264.  
  4265. Format of buffer:
  4266. Offset    Size    Description
  4267.  00h    BYTE    host major version number
  4268.  01h    BYTE    host minor version number
  4269.  02h 126 BYTEs    ASCIZ host vendor name
  4270. ----------310500-----------------------------
  4271. INT 31 - DPMI 0.9+ - protected mode - GET FREE MEMORY INFORMATION
  4272.     AX = 0500h
  4273.     ES:DI / ES:EDI -> buffer for memory information (see below)
  4274. Return: CF clear
  4275. Notes:    16-bit programs use ES:DI, 32-bit programs use ES:EDI
  4276.     this function must be considered advisory because other applications
  4277.       may affect the results at any time after the call
  4278.     fields not supported by the DPMI implementation are filled with
  4279.       FFFFFFFFh
  4280.     DPMI 1.0+ supports this function solely for backward compatibility; use
  4281.       AX=050Bh instead
  4282. SeeAlso: AX=0501h,AX=0604h
  4283.  
  4284. Format of memory information:
  4285. Offset    Size    Description
  4286.  00h    DWORD    largest available block in bytes
  4287.  04h    DWORD    maximum unlocked page allocation
  4288.  08h    DWORD    maximum locked page allocation
  4289.  0Ch    DWORD    total linear address space in pages
  4290.  10h    DWORD    total unlocked pages
  4291.  14h    DWORD    free pages
  4292.  18h    DWORD    total physical pages
  4293.  1Ch    DWORD    free linear address space in pages
  4294.  20h    DWORD    size of paging file/partition in pages
  4295.  24h 12 BYTEs    reserved
  4296. ----------310501-----------------------------
  4297. INT 31 - DPMI 0.9+ - protected mode - ALLOCATE MEMORY BLOCK
  4298.     AX = 0501h
  4299.     BX:CX = size in bytes
  4300. Return: CF clear if successful
  4301.         BX:CX = linear address of block
  4302.         SI:DI = memory block handle for resizing and freeing block
  4303.     CF set on error
  4304.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see AX=0000h)
  4305. Notes:    no selectors are allocated
  4306.     the memory block is allocated unlocked (can be locked with AX=0600h)
  4307.     allocations are often page granular (see AX=0604h)
  4308. SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
  4309. ----------310502-----------------------------
  4310. INT 31 - DPMI 0.9+ - protected mode - FREE MEMORY BLOCK
  4311.     AX = 0502h
  4312.     SI:DI = handle of memory block
  4313. Return: CF clear if successful
  4314.     CF set on error
  4315.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  4316. Note:    any selectors allocated for the memory block must also be freed,
  4317.       preferably before freeing the memory block
  4318. SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
  4319. ----------310503-----------------------------
  4320. INT 31 - DPMI 0.9+ - protected mode - RESIZE MEMORY BLOCK
  4321.     AX = 0503h
  4322.     BX:CX = new size in bytes (nonzero)
  4323.     SI:DI = handle of memory block
  4324. Return: CF clear if successful
  4325.         BX:CX = new linear address
  4326.         SI:DI = new handle of memory block
  4327.     CF set on error
  4328.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
  4329.         (see AX=0000h)
  4330. Notes:    any selectors pointing at the block must be updated
  4331.     the previous memory block handle becomes invalid
  4332.     an error is returned if the new size is 0
  4333. SeeAlso: AX=0102h,AX=0501h,AX=0505h
  4334. ----------310504-----------------------------
  4335. INT 31 - DPMI 1.0+ - protected mode - ALLOCATE LINEAR MEMORY BLOCK
  4336.     AX = 0504h
  4337.     EBX = page-aligned linear address of memory block (00000000h if any
  4338.         address is acceptable)
  4339.     ECX = size in bytes (nonzero)
  4340.     EDX = flags
  4341.         bit 0: set to create committed pages instead of uncommitted pages
  4342.         bits 1-31: reserved (0)
  4343. Return: CF clear if successful
  4344.         EBX = linear address of memory block
  4345.         ESI = memory block handle
  4346.     CF set on error
  4347.         AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see AX=0000h)
  4348. Note:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  4349. SeeAlso: AX=0501h,AX=0505h
  4350. ----------310505-----------------------------
  4351. INT 31 - DPMI 1.0+ - protected mode - RESIZE LINEAR MEMORY BLOCK
  4352.     AX = 0505h
  4353.     ESI = memory block handle
  4354.     ECX = new size in bytes (nonzero)
  4355.     EDX = flags
  4356.         bit 0: create committed pages rather than uncommitted pages
  4357.         bit 1: segment descriptor update required
  4358.         ES:EBX -> buffer containing array of WORDs with selectors
  4359.         EDI = number of selectors in array
  4360.         bits 2-31: reserved (0)
  4361. Return: CF clear if successful
  4362.         EBX = new linear base address
  4363.         ESI = new memory block handle
  4364.     CF set on error
  4365.         AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see AX=0000h)
  4366. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  4367.     the old memory block handle becomes invalid
  4368.     if EDX bit 1 set and the block's base address is changed, DPMI updates
  4369.       all descriptors for selectors in the update buffer which fall within
  4370.       the memory block
  4371. SeeAlso: AX=0503h,AX=0504h
  4372. ----------310506-----------------------------
  4373. INT 31 - DPMI 1.0+ - protected mode - GET PAGE ATTRIBUTES
  4374.     AX = 0506h
  4375.     ESI = memory block handle
  4376.     EBX = offset in memory block of first page
  4377.     ECX = number of pages
  4378.     ES:EDX -> array of WORDs to hold page attributes (see below)
  4379. Return: CF clear if successful
  4380.         buffer filled
  4381.     CF set on error
  4382.         AX = error code (8001h,8023h,8025h) (see AX=0000h)
  4383. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  4384.     if EBX is not page-aligned, it will be rounded down
  4385. SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
  4386.  
  4387. Format of page attribute words:
  4388.  bits 0-2    page type
  4389.         000 uncommitted
  4390.         001 committed
  4391.         010 mapped (see AX=0508h,AX=0509h)
  4392.         other currently unused
  4393.  bit 3        page is read/write rather than read-only
  4394.  bit 4        accessed/dirty bits supplied in bits 5 and 6
  4395.  bit 5        page has been accessed (only valid if bit 4 set)
  4396.  bit 6        page has been written (only valid if bit 4 set)
  4397.  bits 7-15    reserved (0)
  4398. ----------310507-----------------------------
  4399. INT 31 - DPMI 1.0+ - protected mode - MODIFY PAGE ATTRIBUTES
  4400.     AX = 0507h
  4401.     ESI = memory block handle
  4402.     EBX = offset in memory block of first page
  4403.     ECX = number of pages
  4404.     ES:EDX -> array of WORDs with new page attributes (see AX=0506h)
  4405. Return: CF clear if successful
  4406.     CF set on error
  4407.         AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
  4408.         (see AX=0000h)
  4409.         ECX = number of pages which have been set
  4410. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  4411.     if EBX is not page-aligned, it will be rounded down
  4412. SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
  4413. ----------310508-----------------------------
  4414. INT 31 - DPMI 1.0+ - protected mode - MAP DEVICE IN MEMORY BLOCK
  4415.     AX = 0508h
  4416.     ESI = memory block handle
  4417.     EBX = page-aligned offset within memory block of page(s) to be mapped
  4418.     ECX = number of pages to map
  4419.     EDX = page-aligned physical address of device
  4420. Return: CF clear if successful
  4421.     CF set on error
  4422.         AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
  4423. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  4424.     support of this function is optional; hosts are also allowed to support
  4425.       the function for some devices but not others
  4426. SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
  4427. ----------310509-----------------------------
  4428. INT 31 - DPMI 1.0+ - protected mode - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
  4429.     AX = 0509h
  4430.     ESI = memory block handle
  4431.     EBX = page-aligned offset within memory block of page(s) to map
  4432.     ECX = number of pages to map
  4433.     EDX = page-aligned linear address of conventional (below 1M) memory
  4434. Return: CF clear if successful
  4435.     CF set on error
  4436.         AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
  4437. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  4438.     support of this function is optional
  4439. SeeAlso: AX=0504h,AX=0508h,AX=0801h
  4440. ----------31050A-----------------------------
  4441. INT 31 - DPMI 1.0+ - protected mode - GET MEMORY BLOCK SIZE AND BASE
  4442.     AX = 050AH
  4443.     SI:DI = memory block handle
  4444. Return: CF clear if successful
  4445.         SI:DI = size in bytes
  4446.         BX:CX = base address
  4447.     CF set on error
  4448.         AX = error code (8023h) (see AX=0000h)
  4449. SeeAlso: AX=0501h,AX=0504h
  4450. ----------31050B-----------------------------
  4451. INT 31 - DPMI 1.0+ - protected mode - GET MEMORY INFORMATION
  4452.     AX = 050Bh
  4453.     ES:(E)DI -> 128-byte buffer for memory information (see below)
  4454. Return: CF clear if successful
  4455.     CF set on error (DPMI 0.9 only)
  4456. Note:    16-bit programs use ES:DI, 32-bit programs must use ES:EDI
  4457. SeeAlso: AX=0500h
  4458.  
  4459. Format of memory information:
  4460. Offset    Size    Description
  4461.  00h    DWORD    total allocated bytes of physical memory controlled by host
  4462.  04h    DWORD    total allocated bytes of virtual memory controlled by host
  4463.  08h    DWORD    total available bytes of virtual memory controlled by host
  4464.  0Ch    DWORD    total allocated bytes of virtual memory for curr virtual mach
  4465.  10h    DWORD    total available bytes of virtual memory for curr virtual mach
  4466.  14h    DWORD    total allocated bytes of virtual memory for current client
  4467.  18h    DWORD    total available bytes of virtual memory for current client
  4468.  1Ch    DWORD    total locked bytes for current client
  4469.  20h    DWORD    maximum locked bytes for current client
  4470.  24h    DWORD    highest linear address available to current client
  4471.  28h    DWORD    largest available memory block in bytes
  4472.  2Ch    DWORD    minimum allocation unit in bytes
  4473.  30h    DWORD    allocation alignment unit size in bytes
  4474.  34h 76 BYTEs    reserved (00h)
  4475. ----------310600-----------------------------
  4476. INT 31 - DPMI 0.9+ - protected mode - LOCK LINEAR REGION
  4477.     AX = 0600h
  4478.     BX:CX = starting linear address
  4479.     SI:DI = size of region in bytes
  4480. Return: CF clear if successful
  4481.     CF set on error
  4482.         none of the memory is locked
  4483.         AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see AX=0000h)
  4484. Notes:    pages at beginning and end will be locked if the region overlaps them
  4485.     may be called multiple times for a given page; the DPMI host keeps a
  4486.       lock count for each page
  4487. SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
  4488. ----------310601-----------------------------
  4489. INT 31 - DPMI 0.9+ - protected mode - UNLOCK LINEAR REGION
  4490.     AX = 0601h
  4491.     BX:CX = starting linear address
  4492.     SI:DI = size of region in bytes
  4493. Return: CF clear if successful
  4494.     CF set on error
  4495.         none of the memory is unlocked
  4496.         AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
  4497. Notes:    pages at beginning and end will be unlocked if the region overlaps them
  4498.     memory whose lock count has not reached zero remains locked
  4499. SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
  4500. ----------310602-----------------------------
  4501. INT 31 - DPMI 0.9+ - protected mode - MARK REAL MODE REGION AS PAGEABLE
  4502.     AX = 0602h
  4503.     BX:CX = starting linear address
  4504.     SI:DI = size of region in bytes
  4505. Return: CF clear if successful
  4506.     CF set on error    
  4507.         none of the memory is made pageable
  4508.         AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
  4509. Notes:    must relock all unlocked real mode memory before terminating process
  4510.       for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
  4511.     pages at beginning and end will be unlocked if the region overlaps them
  4512.     pageability of real mode pages is binary, not a count
  4513. SeeAlso: AX=0600h,AX=0603h
  4514. ----------310603-----------------------------
  4515. INT 31 - DPMI 0.9+ - protected mode - RELOCK REAL MODE REGION
  4516.     AX = 0603h
  4517.     BX:CX = starting linear address
  4518.     SI:DI = size of region in bytes
  4519. Return: CF clear if successful
  4520.     CF set on error    
  4521.         none of the memory is relocked
  4522.         AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see AX=0000h)
  4523. Notes:    pages at beginning and end will be relocked if the region overlaps them
  4524.     pageability of real mode pages is binary, not a count
  4525. SeeAlso: AX=0602h
  4526. ----------310604-----------------------------
  4527. INT 31 - DPMI 0.9+ - protected mode - GET PAGE SIZE
  4528.     AX = 0604h
  4529. Return: CF clear if successful
  4530.         BX:CX = page size in bytes
  4531.     CF set on error
  4532.         AX = error code (DPMI 1.0+)
  4533.         8001h unsupported, 16-bit host
  4534. ----------310700-----------------------------
  4535. INT 31 - DPMI 0.9+ - protected mode - MARK PAGES AS PAGING CANDIDATES
  4536.     AX = 0700h
  4537.     BX:CX = starting linear page number
  4538.     SI:DI = number of pages to mark as paging candidates
  4539. Return: ???
  4540. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  4541.       specification, this function is called by MS Windows TASKMAN,
  4542.       PROGMAN, and KERNEL
  4543. SeeAlso: AX=0701h,AX=0702h
  4544. ----------310701-----------------------------
  4545. INT 31 - DPMI 0.9+ - protected mode - DISCARD PAGES
  4546.     AX = 0701h
  4547.     BX:CX = starting linear page number
  4548.     SI:DI = number of pages to discard
  4549. Return: ???
  4550. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  4551.       specification, this function is called by MS Windows TASKMAN,
  4552.       PROGMAN, and KERNEL
  4553. SeeAlso: AX=0700h,AX=0703h
  4554. ----------310702-----------------------------
  4555. INT 31 - DPMI 0.9+ - protected mode - MARK PAGE AS DEMAND PAGING CANDIDATE
  4556.     AX = 0702h
  4557.     BX:CX = starting linear address
  4558.     SI:DI = number of bytes to mark as paging candidates
  4559. Return: CF clear if successful
  4560.     CF set on error
  4561.         AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
  4562. Notes:    this function is advisory, and does not force immediate paging
  4563.     partial pages will not be discarded
  4564. SeeAlso: AX=0700h,AX=0703h
  4565. ----------310703-----------------------------
  4566. INT 31 - DPMI 0.9+ - protected mode - DISCARD PAGE CONTENTS
  4567.     AX = 0703h
  4568.     BX:CX = starting linear address
  4569.     SI:DI = number of bytes to mark as discarded
  4570. Return: CF clear if successful
  4571.     CF set on error
  4572.         AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
  4573. Notes:    this function is advisory, and may be ignored by DPMI implementations
  4574.     partial pages will not be discarded
  4575. SeeAlso: AX=0701h,AX=0702h
  4576. ----------310800-----------------------------
  4577. INT 31 - DPMI 0.9+ - protected mode - PHYSICAL ADDRESS MAPPING
  4578.     AX = 0800h
  4579.     BX:CX = physical address (should be above 1 MB)
  4580.     SI:DI = size in bytes
  4581. Return:    CF clear if successful
  4582.         BX:CX = linear address which maps the requested physical memory
  4583.     CF set on error
  4584.         AX = error code (DPMI 1.0+) (8003h,8021h) (see AX=0000h)
  4585. Notes:    implementations may refuse this call because it can circumvent protects
  4586.     the caller must build an appropriate selector for the memory
  4587.     do not use for memory mapped in the first megabyte
  4588. SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
  4589. ----------310801-----------------------------
  4590. INT 31 - DPMI 1.0+ - protected mode - FREE PHYSICAL ADDRESS MAPPING
  4591.     AX = 0801h
  4592.     BX:CX = linear address returned by AX=0800h
  4593. Return: CF clear if successful
  4594.     CF set on error
  4595.         AX = error code (8025h) (see AX=0000h)
  4596. Note:    should be called at end of access to device mapped with AX=0800h
  4597. SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
  4598. ----------310900-----------------------------
  4599. INT 31 - DPMI 0.9+ - protected mode - GET AND DISABLE VIRTUAL INTERRUPT STATE
  4600.     AX = 0900h
  4601. Return: CF clear
  4602.     virtual interrupts disabled
  4603.     AL = 00h if previously disabled
  4604.        = 01h if previously enabled
  4605.     AH preserved
  4606. Notes:    the previous state may be restored simply by executing another INT 31
  4607.     a CLI instruction may be used if the previous state is unimportant,
  4608.       but should be assumed to be very slow due to trapping by the host
  4609. SeeAlso: AX=0901h,AX=0902h
  4610. ----------310901-----------------------------
  4611. INT 31 - DPMI 0.9+ - protected mode - GET AND ENABLE VIRTUAL INTERRUPT STATE
  4612.     AX = 0901h
  4613. Return: CF clear
  4614.     virtual interrupts enabled
  4615.     AL = 00h if previously disabled
  4616.        = 01h if previously enabled
  4617.     AH preserved
  4618. Notes:    the previous state may be restored simply by executing another INT 31
  4619.     a STI instruction may be used if the previous state is unimportant,
  4620.       but should be assumed to be very slow due to trapping by the host
  4621. SeeAlso: AX=0900h,AX=0902h
  4622. ----------310902-----------------------------
  4623. INT 31 - DPMI 0.9+ - protected mode - GET VIRTUAL INTERRUPT STATE
  4624.     AX = 0902h
  4625. Return: CF clear
  4626.     AL = 00h if disabled
  4627.        = 01h if enabled
  4628. Note:    should be used rather than PUSHF because that instruction yields the
  4629.       physical interrupt state rather than the per-client virtualized
  4630.       interrupt flag
  4631. SeeAlso: AX=0900h,AX=0901h
  4632. ----------310A00-----------------------------
  4633. INT 31 - DPMI 0.9+ - protected mode - GET VENDOR SPECIFIC API ENTRY POINT
  4634.     AX = 0A00h
  4635.     DS:SI / DS:ESI -> case-sensitive ASCIZ vendor name or identifier
  4636. Return: CF clear if successful
  4637.         ES:DI / ES:EDI -> FAR extended API entry point
  4638.         DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
  4639.     CF set on error
  4640.         AX = error code (DPMI 1.0+) (8001h) (see AX=0000h)
  4641. Notes:    extended API parameters are vendor-specific
  4642.     DPMI 1.0+ supports this function solely for backward compatibility; use
  4643.       INT 2F/AX=168Ah instead
  4644. SeeAlso: INT 2F/AX=168Ah
  4645. ----------310B00-----------------------------
  4646. INT 31 - DPMI 0.9+ - protected mode - SET DEBUG WATCHPOINT
  4647.     AX = 0B00h
  4648.     BX:CX = linear address
  4649.     DL = size (1,2,4 bytes)
  4650.     DH = type (00h execute, 01h write, 02h read/write)
  4651. Return: CF clear if successful
  4652.         BX = watchpoint handle
  4653.     CF set on error
  4654.         AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see AX=0000h)
  4655. SeeAlso: AX=0212h,AX=0601h
  4656. ----------310B01-----------------------------
  4657. INT 31 - DPMI 0.9+ - protected mode - CLEAR DEBUG WATCHPOINT
  4658.     AX = 0B01h
  4659.     BX = watchpoint handle
  4660. Return: CF clear if successful
  4661.     CF set on error
  4662.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  4663. Note:    the watchpoint handle is freed
  4664. SeeAlso: AX=0B00h
  4665. ----------310B02-----------------------------
  4666. INT 31 - DPMI 0.9+ - protected mode - GET STATE OF DEBUG WATCHPOINT
  4667.     AX = 0B02h
  4668.     BX = watchpoint handle
  4669. Return: CF clear if successful
  4670.         AX = status flags
  4671.         bit 0: watch point has been executed since AX=0B00h or AX=0B03h
  4672.     CF set on error
  4673.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  4674. SeeAlso: AX=0B00h,AX=0B03h
  4675. ----------310B03-----------------------------
  4676. INT 31 - DPMI 0.9+ - protected mode - RESET DEBUG WATCHPOINT
  4677.     AX = 0B03h
  4678.     BX = watchpoint handle
  4679. Return: CF clear if successful
  4680.     CF set on error
  4681.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  4682. SeeAlso: AX=0B02h
  4683. ----------310C00-----------------------------
  4684. INT 31 - DPMI 1.0+ - protected mode - INSTALL RESIDENT HANDLER INIT CALLBACK
  4685.     AX = 0C00h
  4686.     ES:(E)DI -> resident service provider structure (see below)
  4687. Return: CF clear if successful
  4688.     CF set on error
  4689.         AX = error code (8015h,8021h,8025h) (see AX=0000h)
  4690. Note:    calling this function declares an intent to provide resident
  4691.       protected mode services after terminating with AX=0C01h
  4692. SeeAlso: AX=0303h,AX=0C01h
  4693.  
  4694. Format of resident service provider structure:
  4695. Offset    Size    Description
  4696.  00h    QWORD    descriptor for 16-bit data segment
  4697.  08h    QWORD    descriptor for 16-bit code segment (zeros if not supported)
  4698.  10h    WORD    offset of 16-bit callback procedure
  4699.  12h  2 BYTEs    reserved
  4700.  14h    QWORD    descriptor for 32-bit data segment
  4701.  1Ch    QWORD    descriptor for 32-bit code segment (zeros if not supported)
  4702.  24h    DWORD    offset of 32-bit callback procedure
  4703. ----------310C01-----------------------------
  4704. INT 31 - DPMI 1.0+ - protected mode - TERMINATE AND STAY RESIDENT
  4705.     AX = 0C01h
  4706.     BL = return code
  4707.     DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
  4708. Return: never
  4709. Notes:    should only be used if the program will only provide services to
  4710.       other DPMI programs
  4711.     any protected mode memory remains allocated to the program unless
  4712.       explicitly freed before this call
  4713.     must first call AX=0C00h or program will simply be terminated
  4714. SeeAlso: AX=0C00h,INT 21/AH=31h
  4715. ----------310D00-----------------------------
  4716. INT 31 - DPMI 1.0+ - protected mode - ALLOCATE SHARED MEMORY
  4717.     AX = 0D00h
  4718.     ES:(E)DI -> shared memory allocation request structure (see below)
  4719. Return: CF clear if successful
  4720.         request structure updated
  4721.     CF set on error
  4722.         AX = error code (8012h,8013h,8014h,8016h,8021h) (see AX=0000h)
  4723. Note:    first 16 bytes of memory block will be initialized to zeros on the
  4724.       first allocation
  4725. SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
  4726.  
  4727. Format of shared memory allocation request structure:
  4728. Offset    Size    Description
  4729.  00h    DWORD    requested length of shared memory block in bytes
  4730.  04h    DWORD    (return) allocated length of block
  4731.  08h    DWORD    (return) shared memory handle
  4732.  0Ch    DWORD    (return) linear address of memory block
  4733.  10h  6 BYTEs    selector:offset32 of ASCIZ name for memory block
  4734.         (name max 128 bytes)
  4735.  16h  2 BYTEs    reserved
  4736.  18h  4 BYTEs    reserved (00h)
  4737. ----------310D01-----------------------------
  4738. INT 31 - DPMI 1.0+ - protected mode - FREE SHARED MEMORY
  4739.     AX = 0D01h
  4740.     SI:DI = shared memory block handle
  4741. Return: CF clear if successful
  4742.     CF set on error
  4743.         AX = error code (8023h) (see AX=0000h)
  4744. Notes:    handle becomes invalid after this call
  4745.     DPMI maintains separate global and virtual machine use counts for each
  4746.       shared memory block; when the global use counts reaches zero, the
  4747.       block is finally destroyed
  4748. SeeAlso: AX=0502h,AX=0D00h
  4749. ----------310D02-----------------------------
  4750. INT 31 - DPMI 1.0+ - protected mode - SERIALIZE SHARED MEMORY
  4751.     AX = 0D02h
  4752.     SI:DI = shared memory block handle
  4753.     DX = flags
  4754.         bit 0: return immediately rather than suspending if serialization
  4755.             unavailable
  4756.         1: shared rather than exclusive serialization
  4757.         2-15: reserved (0)
  4758. Return: CF clear if successful
  4759.     CF set on error
  4760.         AX = error code (8004h,8005h,8017h-8019h,8023h) (see AX=0000h)
  4761. Notes:    an exclusive serialization blocks any other serialization attempts for
  4762.       the same block by another virtual machine; a shared serialization
  4763.       blocks attempts at exclusive serialization by another virtual machine
  4764.     hosts are not required to detect deadlock
  4765.     a client's interrupt handler can cancel a serialization call which
  4766.       caused it to block by calling AX=0D03h
  4767. SeeAlso: AX=0D00h,AX=0D03h
  4768. ----------310D03-----------------------------
  4769. INT 31 - DPMI 1.0+ - protected mode - FREE SERIALIZATION ON SHARED MEMORY
  4770.     AX = 0D03h
  4771.     SI:DI = shared memory block handle
  4772.     DX = flags
  4773.         bit 0: release shared serialization rather than exclusive serialztn
  4774.         bit 1: free pending serialization
  4775.         bits 2-15: reserved (0)
  4776. Return: CF clear if successful
  4777.     CF set on error
  4778.         AX = error code (8002h,8023h) (see AX=0000h)
  4779. SeeAlso: AX=0D00h,AX=0D02h
  4780. ----------310E00-----------------------------
  4781. INT 31 - DPMI 1.0+ - protected mode - GET COPROCESSOR STATUS
  4782.     AX = 0E00h
  4783. Return: CF clear
  4784.     AX = coprocessor status
  4785.         bit 0: numeric coprocessor enabled for current client
  4786.         bit 1: client is emulating coprocessor
  4787.         bit 2: numeric coprocessor is present
  4788.         bit 3: host is emulating coprocessor instructions
  4789.         bits 4-7: coprocessor type
  4790.         0000 none
  4791.         0010 80287
  4792.         0011 80387
  4793.         0100 80486 with numeric coprocessor
  4794.         other reserved
  4795.         bits 8-15: not used
  4796. SeeAlso: AX=0E01h
  4797. ----------310E01-----------------------------
  4798. INT 31 - DPMI 1.0+ - protected mode - SET EMULATION
  4799.     AX = 0E01h
  4800.     BX = coprocessor flag bits
  4801.         bit 0: enable numeric coprocessor for current client
  4802.         bit 1: client will emulate coprocessor
  4803.         bits 2-15: not used
  4804. Return: CF clear if successful
  4805.     CF set on error
  4806.         AX = error code (8026h) (see AX=0000h)
  4807. SeeAlso: AX=0E00h
  4808. ----------32---------------------------------
  4809. INT 32 - VIRUS - reportedly used by "Tiny" Viruses
  4810. SeeAlso: INT 60"VIRUS"
  4811. ----------330000-----------------------------
  4812. INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
  4813.     AX = 0000h
  4814. Return: AX = status
  4815.         0000h hardware/driver not installed
  4816.         FFFFh hardware/driver installed
  4817.     BX = number of buttons
  4818.         FFFFh two buttons
  4819.         0000h other than two
  4820.         0002h two buttons (many drivers)
  4821.         0003h Mouse Systems/Logitech three-button mouse
  4822. Notes:    to use mouse on a Hercules-compatible monographics card in graphics
  4823.       mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
  4824.       and then call this function.
  4825.     the Logitech mouse driver contains the signature string "LOGITECH"
  4826. SeeAlso: AX=0021h,INT 74
  4827. ----------330001-----------------------------
  4828. INT 33 - MS MOUSE - SHOW MOUSE CURSOR
  4829.     AX = 0001h
  4830. SeeAlso: AX=0002h,INT 16/AX=FFFEh
  4831. ----------330002-----------------------------
  4832. INT 33 - MS MOUSE - HIDE MOUSE CURSOR
  4833.     AX = 0002h
  4834. Note:    multiple calls to hide the cursor will require multiple calls to
  4835.       function 01h to unhide it.
  4836. SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh
  4837. ----------330003-----------------------------
  4838. INT 33 - MS MOUSE - RETURN POSITION AND BUTTON STATUS
  4839.     AX = 0003h
  4840. Return: BX = button status
  4841.        bit 0  left button pressed if 1
  4842.        bit 1  right button pressed if 1
  4843.        bit 2  middle button pressed if 1 (Mouse Systems/Logitech mouse)
  4844.     CX = column
  4845.     DX = row
  4846. SeeAlso: AX=0004h,AX=000Bh
  4847. ----------330004-----------------------------
  4848. INT 33 - MS MOUSE - POSITION MOUSE CURSOR
  4849.     AX = 0004h
  4850.     CX = column
  4851.     DX = row
  4852. Note:    the row and column are truncated to the next lower multiple of the cell
  4853.       size; however, some versions of the Microsoft documentation
  4854.       incorrectly state that the coordinates are rounded
  4855. SeeAlso: AX=0003h
  4856. ----------330005-----------------------------
  4857. INT 33 - MS MOUSE - RETURN BUTTON PRESS DATA
  4858.     AX = 0005h
  4859.     BX = button
  4860.         0000h left
  4861.         0001h right
  4862.         0002h middle (Mouse Systems/Logitech mouse)
  4863. Return: AX = button states
  4864.         bit 0 left button pressed if 1
  4865.         bit 1 right button pressed if 1
  4866.         bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
  4867.     BX = number of times specified button has been pressed since last call
  4868.     CX = column at time specified button was last pressed
  4869.     DX = row at time specified button was last pressed
  4870. SeeAlso: AX=0006h
  4871. ----------330006-----------------------------
  4872. INT 33 - MS MOUSE - RETURN BUTTON RELEASE DATA
  4873.     AX = 0006h
  4874.     BX = button
  4875.         0000h left
  4876.         0001h right
  4877.         0002h middle (Mouse Systems/Logitech mouse)
  4878. Return: AX = button states
  4879.         bit 0 left button pressed if 1
  4880.         bit 1 right button pressed if 1
  4881.         bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
  4882.     BX = number of times specified button has been released since last call
  4883.     CX = column at time specified button was last released
  4884.     DX = row at time specified button was last released
  4885. SeeAlso: AX=0005h
  4886. ----------330007-----------------------------
  4887. INT 33 - MS MOUSE - DEFINE HORIZONTAL CURSOR RANGE
  4888.     AX = 0007h
  4889.     CX = minimum column
  4890.     DX = maximum column
  4891. SeeAlso: AX=0008h,AX=0010h
  4892. ----------330008-----------------------------
  4893. INT 33 - MS MOUSE - DEFINE VERTICAL CURSOR RANGE
  4894.     AX = 0008h
  4895.     CX = minimum row
  4896.     DX = maximum row
  4897. SeeAlso: AX=0007h,AX=0010h
  4898. ----------330009-----------------------------
  4899. INT 33 - MS MOUSE - DEFINE GRAPHICS CURSOR
  4900.     AX = 0009h
  4901.     BX = column of cursor hot spot in bitmap (-16 to 16)
  4902.     CX = row of cursor hot spot (-16 to 16)
  4903.     ES:DX -> bitmap
  4904.         16 words screen mask
  4905.         16 words cursor mask
  4906.             each word defines the sixteen pixels of a row, low bit
  4907.             rightmost
  4908. SeeAlso: AX=000Ah,AX=0012h
  4909. ----------33000A-----------------------------
  4910. INT 33 - MS MOUSE - DEFINE TEXT CURSOR
  4911.     AX = 000Ah
  4912.     BX = hardware/software text cursor
  4913.         0000h software
  4914.         CX = screen mask
  4915.         DX = cursor mask
  4916.         0001h hardware
  4917.         CX = start scan line
  4918.         DX = end scan line
  4919. Note:    when the software cursor is selected, the char/attribute data at the
  4920.       current screen position is ANDed with the screen mask and then XORed
  4921.       with the cursor mask
  4922. SeeAlso: AX=0009h
  4923. ----------33000B-----------------------------
  4924. INT 33 - MS MOUSE - READ MOTION COUNTERS
  4925.     AX = 000Bh
  4926. Return: CX = number of mickeys mouse moved horizontally since last call
  4927.     DX = number of mickeys mouse moved vertically
  4928. Notes:    a mickey is the smallest increment the mouse can sense
  4929.     positive values indicate down/right
  4930. SeeAlso: AX=0003h,AX=001Bh
  4931. ----------33000C-----------------------------
  4932. INT 33 - MS MOUSE - DEFINE INTERRUPT SUBROUTINE PARAMETERS
  4933.     AX = 000Ch
  4934.     CX = call mask
  4935.          bit 0 call if mouse moves
  4936.          bit 1 call if left button pressed
  4937.          bit 2 call if left button released
  4938.          bit 3 call if right button pressed
  4939.          bit 4 call if right button released
  4940.          bit 5 call if middle button pressed (Mouse Systems/Logitech mouse)
  4941.          bit 6 call if middle button released (Mouse Sys/Logitech mouse)
  4942.     ES:DX -> FAR routine
  4943. Notes:    when the subroutine is called, it is passed the following values:
  4944.       AX = condition mask (same bit assignments as call mask)
  4945.       BX = button state
  4946.       CX = cursor column
  4947.       DX = cursor row
  4948.       SI = horizontal mickey count
  4949.       DI = vertical mickey count
  4950.     some versions of the Microsoft documentation incorrectly state that CX
  4951.       bit 0 means call if mouse cursor moves, and swap the meanings of SI
  4952.       and DI
  4953. SeeAlso: AX=0018h
  4954. ----------33000D-----------------------------
  4955. INT 33 - MS MOUSE - LIGHT PEN EMULATION ON
  4956.     AX = 000Dh
  4957. SeeAlso: AX=000Eh
  4958. ----------33000E-----------------------------
  4959. INT 33 - MS MOUSE - LIGHT PEN EMULATION OFF
  4960.     AX = 000Eh
  4961. SeeAlso: AX=000Dh
  4962. ----------33000F-----------------------------
  4963. INT 33 - MS MOUSE - DEFINE MICKEY/PIXEL RATIO
  4964.     AX = 000Fh
  4965.     CX = number of mickeys per 8 pixels horizontally (default 8)
  4966.     DX = number of mickeys per 8 pixels vertically (default 16)
  4967. SeeAlso: AX=0013h,AX=001Ah
  4968. ----------330010-----------------------------
  4969. INT 33 - MS MOUSE - DEFINE SCREEN REGION FOR UPDATING
  4970.     AX = 0010h
  4971.     CX,DX = X,Y coordinates of upper left corner
  4972.     SI,DI = X,Y coordinates of lower right corner
  4973. Note:    mouse cursor is hidden during updating, and needs to be explicitly
  4974.       turned on again
  4975. SeeAlso: AX=0001h,AX=0002h,AX=0007h
  4976. ----------330012-----------------------------
  4977. INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
  4978.     AX = 0012h
  4979.     BH = cursor width in words
  4980.     CH = rows in cursor
  4981.     BL = horizontal hot spot (-16 to 16)
  4982.     CL = vertical hot spot (-16 to 16)
  4983.     ES:DX -> bit map of screen and cursor maps
  4984. Return: AX = FFFFh if successful
  4985. SeeAlso: AX=0009h
  4986. ----------330013-----------------------------
  4987. INT 33 - MS MOUSE - DEFINE DOUBLE-SPEED THRESHOLD
  4988.     AX = 0013h
  4989.     DX = threshold speed in mickeys/second, 0000h = default of 64/second
  4990. Note:    if speed exceeds threshold, the cursor's on-screen motion is doubled
  4991. SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
  4992. ----------330014-----------------------------
  4993. INT 33 - MS MOUSE - EXCHANGE INTERRUPT SUBROUTINES
  4994.     AX = 0014h
  4995.     CX = call mask (see AX=000Ch)
  4996.     ES:DX -> FAR routine 
  4997. Return: CX = call mask of previous interrupt routine
  4998.     ES:DX = FAR address of previous interrupt routine
  4999. SeeAlso: AX=0018h
  5000. ----------330015-----------------------------
  5001. INT 33 - MS MOUSE - RETURN DRIVER STORAGE REQUIREMENTS
  5002.     AX = 0015h
  5003. Return: BX = size of buffer needed to store driver state
  5004. SeeAlso: AX=0016h,AX=0017h,AX=0042h
  5005. ----------330016-----------------------------
  5006. INT 33 - MS MOUSE - SAVE DRIVER STATE
  5007.     AX = 0016h
  5008.     BX = size of buffer (see AX=0015h)
  5009.     ES:DX -> buffer for driver state
  5010. Note:    although not documented, many drivers appear to require BX on input
  5011. SeeAlso: AX=0015h,AX=0017h
  5012. ----------330017-----------------------------
  5013. INT 33 - MS MOUSE - RESTORE DRIVER STATE
  5014.     AX = 0017h
  5015.     BX = size of buffer (see AX=0015h)
  5016.     ES:DX -> buffer containing saved state
  5017. Notes:    although not documented, many drivers appear to require BX on input
  5018.     some mouse drivers range-check the values in the saved state based on
  5019.       the current video mode; thus, the video mode should be restored
  5020.       before the mouse driver's state is restored
  5021. SeeAlso: AX=0015h,AX=0016h
  5022. ----------330018-----------------------------
  5023. INT 33 - MS MOUSE - SET ALTERNATE MOUSE USER HANDLER
  5024.     AX = 0018h
  5025.     CX = call mask
  5026.          bit 0 call if alt key pressed during event
  5027.          bit 1 call if ctrl key pressed during event
  5028.          bit 2 call if shift button pressed during event
  5029.          bit 3 call if right button released
  5030.          bit 4 call if right button pressed
  5031.          bit 5 call if left button released
  5032.          bit 6 call if left button pressed
  5033.          bit 7 call if mouse moves
  5034.     ES:DX = address of FAR routine
  5035. Return: AX = 0018h if successful
  5036.        = FFFFh on error
  5037. Notes:    when the subroutine is called, it is passed the following values:
  5038.       AX = condition mask (same bit assignments as call mask)
  5039.       BX = button state
  5040.       CX = cursor column
  5041.       DX = cursor row
  5042.       DI = horizontal mickey count
  5043.       SI = vertical mickey count
  5044.     up to three handlers can be defined by separate calls to this function
  5045. SeeAlso: AX=0014h,AX=0019h
  5046. ----------330019-----------------------------
  5047. INT 33 - MS MOUSE - RETURN USER ALTERNATE INTERRUPT VECTOR
  5048.     AX = 0019h
  5049.     CX = call mask
  5050. Return: BX:DX = user interrupt vector
  5051.     CX = call mask (0 if not found)
  5052. Note:    attempts to find a user event handler (defined by function 18h)
  5053.       whose call mask matches CX
  5054. SeeAlso: AX=0018h
  5055. ----------33001A-----------------------------
  5056. INT 33 - MS MOUSE - SET MOUSE SENSITIVITY
  5057.     AX = 001Ah
  5058.     BX = horizontal speed \
  5059.     CX = vertical speed   / (see AX=000Fh)
  5060.     DX = double speed threshold (see AX=0013h)
  5061. SeeAlso: AX=0013h,AX=001Bh
  5062. ----------33001B-----------------------------
  5063. INT 33 - MS MOUSE - RETURN MOUSE SENSITIVITY
  5064.     AX = 001Bh
  5065. Return: BX = horizontal speed
  5066.     CX = vertical speed
  5067.     DX = double speed threshold
  5068. SeeAlso: AX=000Bh,AX=001Ah
  5069. ----------33001C-----------------------------
  5070. INT 33 - MS MOUSE - SET INTERRUPT RATE
  5071.     AX = 001Ch
  5072.     BX = rate
  5073.         00h no interrupts allowed
  5074.         01h 30 per second
  5075.         02h 50 per second
  5076.         03h 100 per second
  5077.         04h 200 per second
  5078. Notes:    only available on InPort mouse
  5079.     values greater than 4 may cause unpredictable driver behavior
  5080. ----------33001D-----------------------------
  5081. INT 33 - MS MOUSE - DEFINE DISPLAY PAGE NUMBER
  5082.     AX = 001Dh
  5083.     BX = display page number
  5084. Note:    the cursor will be displayed on the specified page
  5085. SeeAlso: AX=001Eh
  5086. ----------33001E-----------------------------
  5087. INT 33 - MS MOUSE - RETURN DISPLAY PAGE NUMBER
  5088.     AX = 001Eh
  5089. Return: BX = display page number
  5090. SeeAlso: AX=001Dh
  5091. ----------33001F-----------------------------
  5092. INT 33 - MS MOUSE - DISABLE MOUSE DRIVER
  5093.     AX = 001Fh
  5094. Return: AX = 001Fh successful
  5095.          FFFFh unsuccessful
  5096.     ES:BX = vector for INT 33h before mouse driver was first installed
  5097. Note:    restores vectors for Int 10h and Int 71h (8086) or Int 74h (286/386)
  5098.     if you restore Int 33h to ES:BX, driver will be completely disabled
  5099. SeeAlso: AX=0020h
  5100. ----------330020-----------------------------
  5101. INT 33 - MS MOUSE - ENABLE MOUSE DRIVER
  5102.     AX = 0020h
  5103. Note:    restores vectors for Int 10h and Int 71h (8086) or Int 74h (286/386)
  5104.       which were removed by function 1Fh
  5105. SeeAlso: AX=001Fh
  5106. ----------330021-----------------------------
  5107. INT 33 - MS MOUSE - SOFTWARE RESET
  5108.     AX = 0021h
  5109. Return: AX = FFFFh if mouse driver installed
  5110.          0021h if mouse driver not installed
  5111.     BX = 2 if mouse driver is installed
  5112. Note:    identical to funtion 00h, but does not reset the mouse
  5113. SeeAlso: AX=0000h
  5114. ----------330022-----------------------------
  5115. INT 33 - MS MOUSE - SET LANGUAGE FOR MESSAGES
  5116.     AX = 0022h
  5117.     BX = language
  5118.         00h English
  5119.         01h French
  5120.         02h Dutch
  5121.         03h German
  5122.         04h Swedish
  5123.         05h Finnish
  5124.         06h Spanish
  5125.         07h Portugese
  5126.         08h Italian
  5127. Note:    only available on international versions of the driver, US versions
  5128.       ignore this call
  5129. SeeAlso: AX=0023h
  5130. ----------330023-----------------------------
  5131. INT 33 - MS MOUSE - GET LANGUAGE FOR MESSAGES
  5132.     AX = 0023h
  5133. Return:    BX = language (see AX=0022h)
  5134. Note:    the US version of the driver always returns zero 
  5135. SeeAlso: AX=0022h
  5136. ----------330024-----------------------------
  5137. INT 33 - MS MOUSE - GET SOFTWARE VERSION AND MOUSE TYPE
  5138.     AX = 0024h
  5139. Return: AX = FFFFh on error
  5140.     otherwise,
  5141.         BH = major version
  5142.         BL = minor version
  5143.         CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
  5144.         CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7)
  5145. SeeAlso: AX=004Dh
  5146. ----------330026-----------------------------
  5147. INT 33 - MS MOUSE - ???
  5148.     AX = 0026h
  5149. Note:    called by the newest Microsoft applications
  5150. ----------33002C-----------------------------
  5151. INT 33 - MS MOUSE - SET ACCELERATION PROFILES
  5152.     AX = 002Ch
  5153.     ES:DX -> name of file containing profiles
  5154. Note:    see MOUSEPRO.FIL for an example set of acceleration profiles
  5155. SeeAlso: AX=0013h,AX=002Dh
  5156. ----------33002D-----------------------------
  5157. INT 33 - MS MOUSE - SELECT ACCELERATION PROFILE
  5158.     AX = 002Dh
  5159.     BX = acceleration level (01h to 04h)
  5160. Note:    acceleration of FFFFh appears to be legal as well, since it is used
  5161.       by the MS Control Panel v7.04
  5162. SeeAlso: AX=0013h,AX=002Ch
  5163. ----------330042-----------------------------
  5164. INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
  5165.     AX = 0042h
  5166. Return: AX = FFFFh successful
  5167.         BX = buffer size in bytes for functions 50h and 52h
  5168.        = 0000h MSMOUSE not installed
  5169.        = 0042h functions 42h, 50h, and 52h not supported
  5170. SeeAlso: AX=0015h,AX=0050h
  5171. ----------33004D-----------------------------
  5172. INT 33 - MS MOUSE, LOGITECH - RETURN POINTER TO COPYRIGHT STRING
  5173.     AX = 004Dh
  5174. Return: ES:DI -> copyright message "Copyright 1983 Microsoft ***"
  5175. Note:    also supported by Kraft mouse driver
  5176. SeeAlso: AX=0024h,AX=006Dh
  5177. ----------330050-----------------------------
  5178. INT 33 - PCMOUSE - SAVE MSMOUSE STATE
  5179.     AX = 0050h
  5180.     BX = buffer size
  5181.     ES:DX -> buffer
  5182. Return: AX = FFFFh if successful
  5183. SeeAlso: AX=0042h,AX=0052h
  5184. ----------330052-----------------------------
  5185. INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
  5186.     AX = 0052h
  5187.     BX = buffer size
  5188.     ES:DX -> buffer
  5189. Return: AX = FFFFh if successful
  5190. SeeAlso: AX=0050h
  5191. ----------330055-----------------------------
  5192. INT 33 - Kraft Mouse - GET ???
  5193.     AX = 0055h
  5194. Return: CX = ???
  5195.     DX = ???
  5196.     ES = ???
  5197. ----------33006D-----------------------------
  5198. INT 33 - MS MOUSE, Logitech - GET VERSION STRING
  5199.     AX = 006Dh
  5200. Return: ES:DI -> Microsoft version number of resident driver
  5201. Note:    also supported by Kraft mouse driver
  5202. SeeAlso: AX=004Dh
  5203. ----------331D6C-----------------------------
  5204. INT 33 - LOGITECH - GET COMPASS PARAMETER
  5205.     AX = 1D6Ch
  5206. Return: BX = direction (0=north, 1=south, 2=east, 3=west)
  5207. SeeAlso: AX=1E6Ch
  5208. ----------331E6C-----------------------------
  5209. INT 33 - LOGITECH - SET COMPASS PARAMETER
  5210.     AX = 1E6Ch
  5211.     BX = direction (0=north, 1=south, 2=east, 3=west)
  5212. SeeAlso: AX=1D6Ch
  5213. ----------331F6C-----------------------------
  5214. INT 33 - LOGITECH - GET BALLISTICS INFORMATION
  5215.     AX = 1F6Ch
  5216. Return: BX = 0=off, 1=on
  5217.     CX = 1=low, 2=high
  5218. SeeAlso: AX=002Ch,AX=236Ch
  5219. ----------33206C-----------------------------
  5220. INT 33 - LOGITECH - SET LEFT OR RIGHT PARAMETER
  5221.     AX = 206Ch
  5222.     BX = parameter (00h = right, FFh = left)
  5223. SeeAlso: AX=216Ch
  5224. ----------33216C-----------------------------
  5225. INT 33 - LOGITECH - GET LEFT OR RIGHT PARAMETER
  5226.     AX = 216Ch
  5227. Return: BX = parameter (00h = right, FFh = left)
  5228. SeeAlso: AX=206Ch
  5229. ----------33226C-----------------------------
  5230. INT 33 - LOGITECH - REMOVE DRIVER FROM MEMORY
  5231.     AX = 226Ch
  5232. Note:    this only frees memory; does not restore hooked interrupts
  5233. ----------33236C-----------------------------
  5234. INT 33 - LOGITECH - SET BALLISTICS INFORMATION
  5235.     AX = 236Ch
  5236.     BX = 0=off, 1=on
  5237.     CX = 1=low, 2=high
  5238. SeeAlso: AX=002Ch,AX=1F6Ch
  5239. ----------33246C-----------------------------
  5240. INT 33 - LOGITECH - GET PARAMETERS AND RESET SERIAL MOUSE
  5241.     AX = 246Ch
  5242.     ES:DX -> parameter table buffer (see below)
  5243. Return: AX = FFFFh if driver installed for serial mouse
  5244. SeeAlso: AX=0000h,AX=256Ch
  5245.  
  5246. Format of parameter table:
  5247. Offset    Size    Description
  5248.  00h    WORD    baud rate divided by 100  (serial mouse only)
  5249.  02h    WORD    emulation          (serial mouse only)
  5250.  04h    WORD    report rate          (serial mouse only)
  5251.  06h    WORD    firmware revision      (serial mouse only)
  5252.  08h    WORD    0              (serial mouse only)
  5253.  0Ah    WORD    port              (serial mouse only)
  5254.  0Ch    WORD    physical buttons
  5255.  0Eh    WORD    logical buttons
  5256. ----------33256CBX00h -----------------------
  5257. INT 33 - LOGITECH - SET PARAMETERS
  5258.     AX = 256Ch
  5259.     BX = 00h set baud rate (serial mouse only)
  5260.         CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
  5261.        = 01h set emulation (serial mouse only)
  5262.         CX = emulation
  5263.             0 = 5 byte packed binary
  5264.             1 = 3 byte packed binary
  5265.             2 = hexadecimal
  5266.             3 = relative bit pad
  5267.             4 = not supported
  5268.             5 = MM Series
  5269.             6 = not supported
  5270.             7 = Microsoft
  5271.        = 02h set report rate (serial mouse only)
  5272.         CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
  5273.        = 03h set port (serial mouse only)
  5274.         CX = port (1, 2)
  5275.        = 04h set mouse logical buttons
  5276.         CX = buttons (2, 3)
  5277. Return: AX = FFFFh if driver installed for serial mouse
  5278. SeeAlso: AX=246Ch
  5279. ----------33266C-----------------------------
  5280. INT 33 - LOGITECH - GET VERSION???
  5281.     AX = 266Ch
  5282. Return: BX = 'SS'
  5283.     CH = '4'  major version number
  5284.     CL = '1'  minor version number
  5285. SeeAlso: AX=006Dh
  5286. ----------33276C-----------------------------
  5287. INT 33 - LOGITECH - ??? Tries MMSeries, Baud 2400
  5288.     AX = 276Ch
  5289. ----------34---------------------------------
  5290. INT 34 - Borland/Microsoft languages - Floating Point emulation
  5291.     This interrupt emulates opcode D8h
  5292. ----------35---------------------------------
  5293. INT 35 - Borland/Microsoft languages - Floating Point emulation
  5294.     This interrupt emulates opcode D9h
  5295. ----------36---------------------------------
  5296. INT 36 - Borland/Microsoft languages - Floating Point emulation
  5297.     This interrupt emulates opcode DAh
  5298. ----------37---------------------------------
  5299. INT 37 - Borland/Microsoft languages - Floating Point emulation
  5300.     This interrupt emulates opcode DBh
  5301. ----------38---------------------------------
  5302. INT 38 - Borland/Microsoft languages - Floating Point emulation
  5303.     This interrupt emulates opcode DCh
  5304. ----------39---------------------------------
  5305. INT 39 - Borland/Microsoft languages - Floating Point emulation
  5306.     This interrupt emulates opcode DDh
  5307. ----------3A---------------------------------
  5308. INT 3A - Borland/Microsoft languages - Floating Point emulation
  5309.     This interrupt emulates opcode DEh
  5310. ----------3B---------------------------------
  5311. INT 3B - Borland/Microsoft languages - Floating Point emulation
  5312.     This interrupt emulates opcode DFh
  5313. ----------3C---------------------------------
  5314. INT 3C - Borland/Microsoft languages - Floating Point emulation
  5315.     This interrupt emulates instructions with a segment override
  5316. Note:    the generated code is  CD 3C xy mm ....
  5317.     where xy is a modified ESC instruction and mm is the modR/M byte.  The
  5318.     xy byte appears to be encoded as
  5319.         s s 0 1 1 x x x
  5320.     where "ss" specifies the segment override:
  5321.         00 -> DS:
  5322.         01 -> SS:
  5323.         10 -> CS:
  5324.         11 -> ES:
  5325. ----------3D---------------------------------
  5326. INT 3D - Borland/Microsoft languages - Floating Point emulation
  5327.     This interrupt emulates a standalone FWAIT instruction
  5328. ----------3E---------------------------------
  5329. INT 3E - Borland languages - Floating Point emulation "shortcut" call
  5330.     The two bytes following the INT 3E instruction are the subcode and
  5331.     a NOP (90h)
  5332.  
  5333. Subcode        Function
  5334.  DCh    load 8086 stack with 8087 registers
  5335.  DEh    load 8087 registers from 8086 stack
  5336.  E0h    round TOS and R1 to single precision, compare, pop twice
  5337.  E2h    round TOS and R1 to double precision, compare, pop twice
  5338.     Note: apparently buggy in TPas5.5, actually rounding to single prec.
  5339.  E4h    compare TOS/R1 with two POP's
  5340.  E6h    compare TOS/R1 with POP
  5341.  E8h    FTST (check TOS value)
  5342.  EAh    FXAM (check TOS value)
  5343.  ECh    sine
  5344.  EEh    cosine
  5345.  F0h    tangent
  5346.  F2h    arctangent
  5347.  F4h    Ln (FLDLN2 to TOS)
  5348.  F6h    Log2 (FLDLG2 to TOS)
  5349.  F8h    Log10 (FLDLG10 to TOS
  5350.  FAh    Exp (FLDL2E to TOS)
  5351.  FCh    TOS = 2**TOS
  5352.  FEh    TOS = 10**TOS
  5353. ----------3F---------------------------------
  5354. INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
  5355. Note:    INT 3F is the default, and may be overridden while linking
  5356. ----------3F---------------------------------
  5357. INT 3F - Microsoft Dynamic Link Library manager
  5358. ----------40---------------------------------
  5359. INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
  5360. SeeAlso: INT 13,INT 63
  5361. ----------40---------------------------------
  5362. INT 40 - Z100 - Master 8259 - Parity error or S100 error
  5363. ----------41---------------------------------
  5364. INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE
  5365. Note:    the default parameter table array is located at F000h:E401h in 100%
  5366.       compatible BIOSes; the pointer may be overridden by the hard disk
  5367.       controller's BIOS to support drive formats unknown to the ROM BIOS
  5368. SeeAlso: INT 13/AH=09h,INT 1E,INT 46
  5369.  
  5370. Format of fixed disk parameters:
  5371. Offset    Size    Description
  5372.  00h    WORD    number of cylinders
  5373.  02h    BYTE    number of heads
  5374.  03h    WORD    starting reduced write current cylinder (XT only, 0 for others)
  5375.  05h    WORD    starting write precompensation cylinder number
  5376.  07h    BYTE    maximum ECC burst length (XT only)
  5377.  08h    BYTE    control byte
  5378.            bits 0-2: drive option (XT only, 0 for others)
  5379.            bit 3:    set if more than 8 heads (AT and later only)
  5380.            bit 4:    always 0
  5381.            bit 5:    set if manufacturer's defect map on max cylinder+1
  5382.                  (AT and later only)
  5383.            bit 6:    disable ECC retries
  5384.            bit 7:    disable access retries
  5385.  09h    BYTE    standard timeout (XT only, 0 for others)
  5386.  0Ah    BYTE    formatting timeout (XT only, 0 for others)
  5387.  0Bh    BYTE    timeout for checking drive (XT only, 0 for others)
  5388.  0Ch    WORD    cylinder number of landing zone (AT and later only)
  5389.  0Eh    BYTE    number of sectors per track (AT and later only)
  5390.  0Fh    BYTE    reserved
  5391. ----------41---------------------------------
  5392. INT 41 - Z100 - Master 8259 - Processor Swap
  5393. ----------4112-------------------------------
  5394. INT 41 - MS Windows debugging kernel (protected mode) - "OutputDebugString"
  5395.     AH = 12h
  5396.     ???
  5397. Return: ???
  5398. SeeAlso: AH=50h
  5399. ----------4150-------------------------------
  5400. INT 41 - MS Windows debugging kernel (protected mode) - "DefineDebugSegment"
  5401.     AH = 50h
  5402.     ???
  5403. Return: ???
  5404. SeeAlso: AH=12h
  5405. ----------42---------------------------------
  5406. INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
  5407. SeeAlso: INT 10
  5408. Note:    not used by PS/2 built-in VGA or XGA
  5409. ----------42---------------------------------
  5410. INT 42 - Z100 - Master 8259 - Timer
  5411. ----------43---------------------------------
  5412. INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
  5413.    points at graphics data for characters 00h-7Fh of the current font
  5414. SeeAlso: INT 1F,INT 44"VIDEO"
  5415. ----------43---------------------------------
  5416. INT 43 - Z100 - Master 8259 - Slave 8259 input
  5417. Note:    slave runs in special fully nested mode
  5418. ----------44---------------------------------
  5419. INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
  5420.    points at graphics data for current character font
  5421. SeeAlso: INT 1F,INT 43"VIDEO"
  5422. ----------44---------------------------------
  5423. INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
  5424. ----------44---------------------------------
  5425. INT 44 - IBM 3270-PC High Level Language API
  5426.     DS:SI -> parameter control block
  5427. ----------44---------------------------------
  5428. INT 44 - Z100 - Master 8259 - Serial A
  5429. SeeAlso: INT 45"Z100"
  5430. ----------45---------------------------------
  5431. INT 45 - Z100 - Master 8259 - Serial B
  5432. SeeAlso: INT 44"Z100"
  5433. ----------46---------------------------------
  5434. INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
  5435. SeeAlso: INT 13/AH=09h,INT 41
  5436. ----------46---------------------------------
  5437. INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
  5438. SeeAlso: INT 47"Z100"
  5439. ----------47---------------------------------
  5440. INT 47 - Z100 - Master 8259 - Printer
  5441. SeeAlso: INT 46"Z100"
  5442. ----------478000-----------------------------
  5443. INT 47 - SQL Base - DATABASE ENGINE API
  5444.     AX = 8000h
  5445.     DS:BX -> parameter block, first word is function number
  5446. Note:    SQL Base is a network-oriented database engine by Gupta Technologies
  5447.  
  5448. Values for function number:
  5449.  01h    "SQLFINI" initalialize application's use of the database
  5450.  02h    "SQLFDON" application is done using the database
  5451.  03h    "SQLFCON" connect to a cursor/database
  5452.  04h    "SQLFDIS" disconnect from a cursor/database
  5453.  05h    "SQLFCOM" compile a SQL command
  5454.  06h    "SQLFEXE" execute a SQL command
  5455.  07h    "SQLFCEX" compile and execute a SQL command
  5456.  08h    "SQLFCMT" commit a transaction to the database
  5457.  09h    "SQLFDES" describe the items of a SELECT statement
  5458.  0Ah    "SQLFGFI" get fetch information
  5459.  0Bh    "SQLFFBK" fetch previous result row from SELECT statement
  5460.  0Ch    "SQLFFET" fetch next result row from SELECT statement
  5461.  0Dh    "SQLFEFB" enable fetch backwards
  5462.  0Eh    "SQLFPRS" position in result set
  5463.  0Fh    "SQLFURS" undo result set
  5464.  10h    "SQLFNBV" get number of bind variables
  5465.  11h    "SQLFBND" bind data variables
  5466.  12h    "SQLFBNN" bind numerics
  5467.  13h    "SQLFBLN" bind long number
  5468.  14h    "SQLFBLD" bind long data variables
  5469.  15h    "SQLFSRS" start restriction set processing
  5470.  16h    "SQLFRRS" restart restriction set processing
  5471.  17h    "SQLFCRS" close restriction set
  5472.  18h    "SQLFDRS" drop restriction set
  5473.  19h    "SQLFARF" apply Roll Forward journal
  5474.  1Ah    "SQLFERF" end Roll Forward journal
  5475.  1Bh    "SQLFSRF" start Roll Forward journal
  5476.  1Ch    "SQLFSTO" store a compiled SQL command
  5477.  1Dh    "SQLFRET" retrieve a compiled SQL command
  5478.  1Eh    "SQLFDST" drop a stored command
  5479.  1Fh    "SQLFCTY" get command type
  5480.  20h    "SQLFEPO" get error position
  5481.  21h    "SQLFGNR" get number of rows
  5482.  22h    "SQLFNSI" get number of select items
  5483.  23h    "SQLFRBF" get Roll Back flag
  5484.  24h    "SQLFRCD" get return code
  5485.  25h    "SQLFROW" get number of ROWs
  5486.  26h    "SQLFSCN" set cursor name
  5487.  27h    "SQLFSIL" set isolation level
  5488.  28h    "SQLFSLP" set log parameters
  5489.  29h    "SQLFSSB" set select buffer
  5490.  2Ah    "SQLFSSS" set sort space
  5491.  2Bh    "SQLFRLO" read long
  5492.  2Ch    "SQLFWLO" write long
  5493.  2Dh    "SQLFLSK" long seek
  5494.  2Eh    "SQLFGLS" get long size
  5495.  2Fh    "SQLFELO" end long operation
  5496.  30h    "SQLFRBK" roll back a transaction from the database
  5497.  31h    "SQLFERR" error message
  5498.  32h    "SQLFCPY" copy
  5499.  33h    "SQLFR01" reserved
  5500.  34h    "SQLFSYS" system
  5501.  35h    "SQLFSTA" statistics
  5502.  36h    "SQLFR02" reserved
  5503.  37h    "SQLFXAD" extra add
  5504.  38h    "SQLFXCN" extra character to number
  5505.  39h    "SQLFXDA" extra date add
  5506.  3Ah    "SQLFXDP" extra date picture
  5507.  3Bh    "SQLFXDV" extra divide
  5508.  3Ch    "SQLFXML" extra multiply
  5509.  3Dh    "SQLFXNP" extra number picture
  5510.  3Eh    "SQLFXPD" extra picture date
  5511.  3Fh    "SQLFXSB" extra subtract
  5512.  40h    "SQLFINS" install database
  5513.  41h    "SQLFDIN" deinstall database
  5514.  42h    "SQLFDIR" directory of databases
  5515.  43h    "SQLFTIO" timeout
  5516.  44h    "SQLFFQN" get fully qualified column name
  5517.  45h    "SQLFEXP" explain execution plan
  5518.  46h    "SQLFFER" get full error
  5519.  47h    "SQLFBKP" begin online backup
  5520.  48h    "SQLFRDC" read backup data chunk
  5521.  49h    "SQLFEBK" end backup
  5522.  4Ah    "SQLFRES" begin restore from backup
  5523.  4Bh    "SQLFWDC" write backup data chunk for restore
  5524.  4Ch    "SQLFRRD" recover restored database to consistent state
  5525.  4Dh    "SQLFERS" end restore
  5526.  4Eh    "SQLFNRR" return number of result set rows
  5527.  4Fh    "SQLFSTR" start restriction mode
  5528.  50h    "SQLFSPR" stop restriction mode
  5529.  51h    "SQLFCNC" connect 2
  5530.  52h    "SQLFCNR" connect with no recovery
  5531.  53h    "SQLFOMS" set output message size
  5532.  54h    "SQLFIMS" set input message size
  5533.  55h    "SQLFSCP" set cache pages
  5534.  56h    "SQLFDSC" describe items of a SELECT statement (external)
  5535.  57h    "SQLFLAB" get label info for items in SELECT statement
  5536.  58h    "SQLFCBV" clear bind variables
  5537.  59h    "SQLFGET" get database information
  5538.  5Ah    "SQLFSET" set database information
  5539.  5Bh    "SQLFTEC" translate error code
  5540. ----------478001-----------------------------
  5541. INT 47 - SQL Base - GET VERSION NUMBER
  5542.     AX = 8001h
  5543. Return: ???
  5544. Note:    SQL Base is a network-oriented database engine by Gupta Technologies
  5545. ----------48---------------------------------
  5546. INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
  5547. SeeAlso: INT 49"PCjr"
  5548. ----------48---------------------------------
  5549. INT 48 - Z100 - Slave 8259 - S100 vectored line 0
  5550. SeeAlso: INT 49"Z100"
  5551. ----------48---------------------------------
  5552. INT 48 - Watstar PC Network data pointer 1
  5553. SeeAlso: INT 49"Watstar"
  5554. ----------49---------------------------------
  5555. INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
  5556. SeeAlso: INT 48"PCjr"
  5557.  
  5558. Format of translation table:
  5559. Offset    Size    Description
  5560.  00h    BYTE    number of nonkeyboard scancodes in the table
  5561.  01h  N WORDs    high byte 00h (NUL) byte scancode with low order byte
  5562.         representing the scancode mapped values relative to their
  5563.         input values within the range of 56h through 7Eh
  5564. ----------49---------------------------------
  5565. INT 49 - Z100 - Slave 8259 - S100 vectored line 1
  5566. SeeAlso: INT 48"Z100",INT 4A"Z100"
  5567. ----------49---------------------------------
  5568. INT 49 - Texas Instruments PC - VIDEO I/O???
  5569.     apparently provides direct video display on the TI Professional PC
  5570. ----------49---------------------------------
  5571. INT 49 - Watstar PC Network data pointer 2
  5572. SeeAlso: INT 49"Watstar"
  5573. ----------490001-----------------------------
  5574. INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
  5575.     AX = 0001h
  5576. Return: AX = status
  5577.         0000h cannot magnify current video mode
  5578.         0002h magnified (text mode)
  5579.         0003h magnified (graphics mode)
  5580.         FFFDh function works only in magnified mode
  5581.         FFFFh MAGic busy, retry later
  5582.     BX,CX,DX destroyed
  5583. Notes:    MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
  5584.       providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
  5585.     INT 49 is the default, but may be overridden on the commandline.  The
  5586.       actual interrupt in use may be found by searching for the signature
  5587.       "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
  5588.       the interrupt handler (this is also the installation check).    MAGic
  5589.       uses CodeRunneR, which places the signature "RT" at offset 0000h in
  5590.       the interrupt handler's segment, followed by MAGic's TSR ID of
  5591.       "VMAG".
  5592. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0008h
  5593. ----------490002-----------------------------
  5594. INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
  5595.     AX = 0002h
  5596. Return: AX = status (see AX=0001h)
  5597.     BX,CX,DX destroyed
  5598. SeeAlso: AX=0001h
  5599. ----------490003-----------------------------
  5600. INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
  5601.     AX = 0003h
  5602.     BX = vertical position (character row [text] or pixel row [graphics])
  5603.     DX = horizontal position (char column [text] or 8-pixel units [gr])
  5604. Return: AX = status
  5605.         0000h successful
  5606.         FFFFh MAGic busy, retry later
  5607.     BX,CX,DX destroyed
  5608. Note:    window is not moved if the position is inside the current window
  5609. SeeAlso: AX=0001h,AX=0004h,AX=0005h
  5610. ----------490004-----------------------------
  5611. INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
  5612.     AX = 0004h
  5613.     BX = vertical position of upper left corner
  5614.     DX = horizontal position
  5615. Return: AX = status (see AX=0003h)
  5616.     BX,CX,DX destroyed
  5617. SeeAlso: AX=0001h,AX=0003h,AX=0005h
  5618. ----------490005-----------------------------
  5619. INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
  5620.     AX = 0005h
  5621. Return: AX = status
  5622.         0000h successful
  5623.         BX = vertical position (char row or pixel row)
  5624.         DX = horizontal position (char column or 8-pixel units)
  5625.         FFFFh MAGic busy, retry later
  5626.         BX,DX destroyed
  5627.     CX destroyed
  5628. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
  5629. ----------490006-----------------------------
  5630. INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
  5631.     AX = 0006h
  5632. Return: AX = status
  5633.         0000h successful
  5634.         BX = vertical size (char rows or pixel rows)
  5635.         DX = horizontal size (char cols or 8-pixel units)
  5636.         FFFFh MAGic busy, retry later
  5637.         BX,DX destroyed
  5638.     CX destroyed
  5639. SeeAlso: AX=0001h,AX=0005h,AX=0007h
  5640. ----------490007-----------------------------
  5641. INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
  5642.     AX = 0007h
  5643. Return: AX = status
  5644.         0000h successful
  5645.         BX = vertical size (char rows or pixel rows)
  5646.         DX = horizontal size (char cols or 8-pixel units)
  5647.         FFFEh invalid function
  5648.         FFFFh MAGic busy, retry later
  5649.         BX,DX destroyed
  5650.     CX destroyed
  5651. BUG:    in v1.16 and v1.17, this function is not recognized as valid, but
  5652.       AX=0000h is accepted and will branch into hyperspace
  5653. SeeAlso: AX=0001h,AX=0006h
  5654. ----------490008-----------------------------
  5655. INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
  5656.     AX = 0008h
  5657.     BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
  5658. Return: AX = status
  5659.         0000h successful
  5660.         FFFBh scaling factor only available in MAGic Deluxe
  5661.         FFFCh already in magnified state, can't set size
  5662. Notes:    this call specifies the amount a subsequent call to AX=0001h should
  5663.       magnify the display
  5664.     scaling factors greater than 2 are only available in MAGic Deluxe
  5665. SeeAlso: AX=0001h
  5666. ----------4A---------------------------------
  5667. INT 4A - SYSTEM - USER ALARM HANDLER
  5668.    This interrupt is invoked by the BIOS when a real-time clock alarm occurs.
  5669.    An application may use it to perform an action at a predetermined time;
  5670.    however, this interrupt is called from within a hardware interrupt handler,
  5671.    so all usual precautions against reentering DOS must be taken.
  5672. SeeAlso: INT 1A/AH=06h
  5673. ----------4A---------------------------------
  5674. INT 4A - Z100 - Slave 8259 - S100 vectored line 2
  5675. SeeAlso: INT 49"Z100",INT 4B"Z100"
  5676. ----------4B---------------------------------
  5677. INT 4B - Z100 - Slave 8259 - S100 vectored line 3
  5678. SeeAlso: INT 4A"Z100",INT 4C"Z100"
  5679. ----------4B---------------------------------
  5680. INT 4B - Common Access Method SCSI interface (draft revision 1.9)
  5681.     ES:DI -> CAM Control Block (see INT 4F/AX=8100h)
  5682. Notes:    the CAM committee moved the interface to INT 4F after revision 1.9
  5683.       to avoid conflicting with the IBM SCSI interface and the Virtual
  5684.       DMA specification
  5685.     the installation check for the driver is the string "SCSI_CAM" eight
  5686.       bytes past the INT 4Bh handler
  5687.     it is not known whether any drivers actually implemented this
  5688.       interface on INT 4B instead of INT 4F
  5689. SeeAlso: INT 4F/AX=8100h
  5690. ----------4B80-------------------------------
  5691. INT 4B - IBM SCSI interface
  5692.     AH = 80h
  5693.     details not yet available
  5694. ----------4B8102DX0000-----------------------
  5695. INT 4B - Virtual DMA Specification (VDS) - GET VERSION
  5696.     AX = 8102h
  5697.     DX = 0000h
  5698. Return: CF clear if successful
  5699.         AH = major version number
  5700.         AL = minor version number
  5701.         BX = product number
  5702.             0000h for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
  5703.             0001h for Microsoft's EMM386.EXE
  5704.         4560h ("E`") for Qualitas' 386MAX
  5705.             4D43h ("MC") for V Communication's Memory Commander
  5706.         5145h ("QE") for Quarterdeck's QEMM-386
  5707.         CX = product revision number
  5708.             always 0000h for QMAPS and HPMM.SYS
  5709.             always 0001h for Microsoft's EMM386.EXE v4.20-4.41
  5710.         SI:DI = maximum DMA buffer size
  5711.         DX = flags
  5712.         bit 0: PC/XT bus (DMA in first megabyte only)
  5713.             1: physical buffer/remap region in first megabyte
  5714.             2: automatic remap enabled
  5715.             3: all memory is physically contiguous
  5716.          4-15: reserved (zero)
  5717.     CF set on error
  5718.         AL = error code (see below)
  5719. Note:    bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
  5720.       apparently not always the case
  5721. SeeAlso: INT 31
  5722.  
  5723. Values for error code:
  5724.  01h    region not in contiguous memory
  5725.  02h    region crossed a physical alignment boundary
  5726.  03h    unable to lock pages
  5727.  04h    no buffer available
  5728.  05h    region too large for buffer
  5729.  06h    buffer currently in use
  5730.  07h    invalid memory region
  5731.  08h    region was not locked
  5732.  09h    number of physical pages greater than table length
  5733.  0Ah    invalid buffer ID
  5734.  0Bh    copy out of buffer range
  5735.  0Ch    invalid DMA channel number
  5736.  0Dh    disable count overflow
  5737.  0Eh    disable count underflow
  5738.  0Fh    function not supported
  5739.  10h    reserved flag bits set in DX
  5740.  
  5741. Format of DMA descriptor structure (DDS):
  5742. Offset    Size    Description
  5743.  00h    DWORD    region size
  5744.  04h    DWORD    offset
  5745.  08h    WORD    segment/selector
  5746.  0Ah    WORD    buffer ID
  5747.  0Ch    DWORD    physical address
  5748.  
  5749. Format of Extended DMA descriptor structure (EDDS):
  5750. Offset    Size    Description
  5751.  00h    DWORD    region size
  5752.  04h    DWORD    offset
  5753.  08h    WORD    segment/selector
  5754.  0Ah    WORD    reserved
  5755.  0Ch    WORD    number available
  5756.  0Eh    WORD    number used
  5757.  10h    DWORD    region 0 physical address
  5758.  14h    DWORD    region 0 size in bytes
  5759.  18h    DWORD    region 1 physical address
  5760.  1Ch    DWORD    region 1 size in bytes
  5761.     ...
  5762.  
  5763. Format of Extended DMA descriptor structure (EDDS) with page table entries:
  5764. Offset    Size    Description
  5765.  00h    DWORD    region size
  5766.  04h    DWORD    offset
  5767.  08h    WORD    segment/selector
  5768.  0Ah    WORD    reserved
  5769.  0Ch    WORD    number available
  5770.  0Eh    WORD    number used
  5771.  10h    DWORD    page table entry 0 (same as 80386 page table entry)
  5772.  14h    DWORD    page table entry 1
  5773.     ...
  5774. Note:    bits 1-11 of the page table entries should be zero; bit 0 set if page
  5775.       is present and locked
  5776. ----------4B8103-----------------------------
  5777. INT 4B - Virtual DMA Specification - LOCK DMA REGION
  5778.     AX = 8103h
  5779.     DX = flags
  5780.         bit 0: reserved (zero)
  5781.         1: data should be copied into buffer (ignored if bit 2 set)
  5782.         2: buffer should not be allocated if region noncontiguous or
  5783.            crosses physical alignment boundary specified by bits 4-5
  5784.         3: don't attempt automatic remap
  5785.         4: region must not cross 64K physical alignment boundary
  5786.         5: region must not cross 128K physical alignment boundary
  5787.          6-15: reserved (zero)
  5788.     DS:SI -> DMA descriptor structure (see AX=8102h)
  5789. Return:    CF clear if successful
  5790.         DDS physical address field filled in
  5791.         DDS buffer ID field filled (0000h if no buffer allocated)
  5792.     CF set on error
  5793.         AL = error code (see AX=8102h)
  5794.         DDS region size field filled wth maximum contiguous length in bytes
  5795. SeeAlso: AX=8104h,AX=8105h
  5796. ----------4B8104-----------------------------
  5797. INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
  5798.     AX = 8104h
  5799.     DX = flags
  5800.         bit 0: reserved (zero)
  5801.         1: data should be copied out of buffer
  5802.          2-15: reserved (zero)
  5803.     ES:DI -> DMA descriptor structure (see AX=8102h) with region size,
  5804.         physical address, and buffer ID fields set
  5805. Return: CF clear if successful
  5806.         DDS physical address field set
  5807.         DDS buffer ID field set (0000h if no buffer allocated)
  5808.     CF set on error
  5809.         AL = error code (see AX=8102h)
  5810.         DDS region size field filled wth maximum contiguous length in bytes
  5811. SeeAlso: AX=8103h,AX=8106h
  5812. ----------4B8105-----------------------------
  5813. INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
  5814.     AX = 8105h
  5815.     DX = flags
  5816.         bits 0-5: reserved (zero)
  5817.            6: EDDS should be returned with page table entries
  5818.            7: only present pages should be locked (not-present pages
  5819.             receive entry of 0000h)
  5820.         8-15: reserved (zero)
  5821.     ES:DI -> Extended DMA descriptor structure (see AX=8102h)
  5822.         region size, linear segment, linear offset, and number avail
  5823.         fields set
  5824. Return: CF clear if successful
  5825.         EDDS number used field set
  5826.         if DX bit 6 set, lower 12 bits of BX = offset in first page
  5827.     CF set on error
  5828.         AL = error code (see AX=8102h)
  5829.         EDDS region size field filled with max length in bytes that can be
  5830.         locked and described in the EDDS table
  5831. SeeAlso: AX=8103h,AX=8106h
  5832. ----------4B8106-----------------------------
  5833. INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
  5834.     AX = 8106h
  5835.     DX = flags
  5836.         bits 0-5: reserved (zero)
  5837.            6: EDDS contains page table entries
  5838.            7: EDDS may contain not-present pages (entry = 0000h)
  5839.         8-15: reserved (zero)
  5840.     ES:DI -> Extended DMA descriptor structure (see AX=8102h) returned
  5841.         by AX=8105h    
  5842. Return: CF clear if successful
  5843.     CF set on error
  5844.         AL = error code (see AX=8102h)
  5845. SeeAlso: AX=8104h,AX=8105h
  5846. ----------4B8107-----------------------------
  5847. INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
  5848.     AX = 8107h
  5849.     DX = flags
  5850.         bit 0: reserved (zero)
  5851.         1: data should be copied into buffer
  5852.          2-15: reserved (zero)
  5853.     ES:DI -> DMA descriptor structure (see AX=8102h) with region size set
  5854.         (also region offset and region segment if DX bit 1 set)
  5855. Return: CF clear if successful
  5856.         DDS physical address and buffer ID set
  5857.         DDS region size filled with length of buffer
  5858.     CF set on error
  5859.         AL = error code (see AX=8102h)
  5860. SeeAlso: AX=8108h
  5861. ----------4B8108-----------------------------
  5862. INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
  5863.     AX = 8108h
  5864.     DX = flags
  5865.         bit 0: reserved (zero)
  5866.         1: data should be copied out of buffer
  5867.          2-15: reserved (zero)
  5868.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID set
  5869.         (also region size/region offset/segment if DX bit 1 set)
  5870. Return: CF clear if successful
  5871.     CF set on error
  5872.         AL = error code (see AX=8102h)
  5873. SeeAlso: AX=8107h
  5874. ----------4B8109DX0000-----------------------
  5875. INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
  5876.     AX = 8109h
  5877.     DX = 0000h
  5878.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
  5879.         region segment/offset, and region size fields set
  5880.     BX:CX = starting offset into DMA buffer
  5881. Return: CF clear if successful
  5882.     CF set on error
  5883.         AL = error code (see AX=8102h)
  5884. SeeAlso: AX=810Ah
  5885. ----------4B810ADX0000-----------------------
  5886. INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
  5887.     AX = 810Ah
  5888.     DX = 0000h
  5889.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
  5890.         region segment/offset, and region size fields set
  5891.     BX:CX = starting offset into DMA buffer
  5892. Return: CF clear if successful
  5893.     CF set on error
  5894.         AL = error code (see AX=8102h)
  5895. SeeAlso: AX=8109h
  5896. ----------4B810B-----------------------------
  5897. INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
  5898.     AX = 810Bh
  5899.     BX = DMA channel number
  5900.     DX = 0000h
  5901. Return: CF clear if successful
  5902.     CF set on error
  5903.         AL = error code (see AX=8102h)
  5904. SeeAlso: AX=810Ch
  5905. ----------4B810C-----------------------------
  5906. INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
  5907.     AX = 810Ch
  5908.     BX = DMA channel number
  5909.     DX = 0000h
  5910. Return: CF clear if successful
  5911.         ZF set if disable count decremented to zero
  5912.     CF set on error
  5913.         AL = error code (see AX=8102h)
  5914. SeeAlso: AX=810Bh
  5915. ----------4B810D-----------------------------
  5916. INT 4B - QEMM-386 - BUG
  5917.     AX = 810Dh
  5918. Note:    the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
  5919.       call
  5920. ----------4C---------------------------------
  5921. INT 4C - Z100 - Slave 8259 - S100 vectored line 4
  5922. SeeAlso: INT 4B"Z100",INT 4D"Z100"
  5923. ----------4D---------------------------------
  5924. INT 4D - Z100 - Slave 8259 - S100 vectored line 5
  5925. SeeAlso: INT 4C"Z100",INT 4E"Z100"
  5926. ----------4E---------------------------------
  5927. INT 4E - TI Professional PC - DISK I/O
  5928.     used instead of INT 13 on the TI Professional PC
  5929. SeeAlso: INT 13
  5930. ----------4E---------------------------------
  5931. INT 4E - Z100 - Slave 8259 - S100 vectored line 6
  5932. SeeAlso: INT 4D"Z100",INT 4F"Z100"
  5933. ----------4F---------------------------------
  5934. INT 4F - Z100 - Slave 8259 - S100 vectored line 7
  5935. SeeAlso: INT 4E"Z100"
  5936. ----------4F8100-----------------------------
  5937. INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
  5938.     AX = 8100h
  5939.     ES:BX -> CAM Control Block (CCB) (see below)
  5940. Return: AH = status
  5941.         00h successful
  5942.         01h invalid CCB address (0000h:0000h)
  5943. Note:    the SCSI Interface Module (SIM) may complete the requested function
  5944.       and invoke the completion callback function before this call returns
  5945. SeeAlso: AX=8200h,INT 4B"Common Access Method"
  5946.  
  5947. Format of CAM Control Block:
  5948. Offset    Size    Description
  5949.  00h    DWORD    physical address of this CCB
  5950.  04h    WORD    CAM control block length
  5951.  06h    BYTE    function code (see below)
  5952.  07h    BYTE    CAM status (see below)
  5953.  08h    BYTE    SCSI status
  5954.  09h    BYTE    path ID (FFh = XPT)
  5955.  0Ah    BYTE    target ID
  5956.  0Bh    BYTE    logical unit number
  5957.  0Ch    BYTE    CAM flags
  5958.         bits 7-6: direction
  5959.             00 reserved
  5960.             01 in
  5961.             10 out
  5962.             11 no data transfer
  5963.         bit 5: disable autosense
  5964.             4: scatter/gather
  5965.             3: disable callback on completion
  5966.             2: linked CDB
  5967.             1: tagged queue action enable
  5968.             0: CDB is a pointer
  5969.  0Dh    BYTE    CAM flags
  5970.         bit 7: disable disconnect
  5971.             6: initiate synchronous transfers  \ mutually
  5972.             5: disable synchronous transfers   / exclusive
  5973.             4: SIM queue priority
  5974.             1 head insertion
  5975.             0 tail insertion (normal)
  5976.         bit 3: SIM queue freeze
  5977.             2: engine synchronize
  5978.         bits 1-0: reserved
  5979.  0Eh    BYTE    CAM address flags
  5980.         bit 7: SG list/data (0 = host, 1 = engine)
  5981.         bit 6: CDB pointer    (bits 6-1: 0=virtual addr, 1=phys addr)
  5982.         bit 5: SG list/data
  5983.         bit 4: sense buffer
  5984.         bit 3: message buffer
  5985.         bit 2: next CCB
  5986.         bit 1: callback on completion
  5987.         bit 0: reserved
  5988.  0Fh    BYTE    target-mode flags
  5989.         bit 7: data buffer valid
  5990.         bit 6: status valid
  5991.         bit 5: message buffer valid
  5992.         bit 4: reserved
  5993.         bit 3: phase-cognizant mode
  5994.         bit 2: target CCB available
  5995.         bit 1: disable autodisconnect
  5996.         bit 0: disable autosave/restore
  5997. ---function 02h---
  5998.  10h    DWORD    pointer to 36-byte buffer for inquiry data or 0000h:0000h
  5999.  14h    BYTE    peripheral device type of target logical unit number
  6000. ---function 03h---
  6001.  10h    BYTE    version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
  6002.         09h-FFh = rev no, i.e. 23h = rev 2.3)
  6003.  11h    BYTE    SCSI capabilities
  6004.         bit 7: modify data pointers
  6005.             6: wide bus (32 bits)
  6006.             5: wide bus (16 bits)
  6007.             4: synchronous transfers
  6008.             3: linked commands
  6009.             2: reserved
  6010.             1: tagged queueing
  6011.             0: soft reset
  6012.  12h    BYTE    target mode support
  6013.         bit 7: processor mode
  6014.             6: phase-cognizant mode
  6015.             5-0: reserved
  6016.  13h    BYTE    miscellaneous flags
  6017.         bit 7: scanned high to low instead of low to high
  6018.             6: removables not included in scan
  6019.             5: inquiry data not kept by XPT
  6020.             4-0: reserved
  6021.  14h    WORD    engine count
  6022.  16h 14 BYTEs    vendor-specific data
  6023.  24h    DWORD    size of private data area
  6024.  28h    DWORD    asynchronous event capabilities
  6025.         bits 31-24: vendor-specific
  6026.              23-8: reserved
  6027.             7: new devices found during rescan
  6028.             6: SIM module deregistered
  6029.             5: SIM module registered
  6030.             4: sent bus device reset to target
  6031.             3: SCSI AEN
  6032.             2: reserved
  6033.             1: unsolicited reselection
  6034.             0: unsolicited SCSI bus reset
  6035.  2Ch    BYTE    highest path ID assigned
  6036.  2Dh    BYTE    SCSI device ID of initiator
  6037.  2Eh  2 BYTEs    reserved
  6038.  30h 16 BYTEs    SIM vendor ID
  6039.  40h 16 BYTEs    HBA (host bus adaptor) vendor ID
  6040.  50h  4 BYTEs    operating-system dependant usage
  6041. ---functions 00h,04h,11h,12h---
  6042.  no additional fields
  6043. ---function 05h---
  6044.  10h    DWORD    asynchronous event enables (see CAM function 03h above)
  6045.  14h    DWORD    pointer to asynchronous callback routine
  6046.  18h    DWORD    pointer to peripheral driver buffer
  6047.  1Ch    BYTE    size of peripheral buffer
  6048. ---function 06h---
  6049.  10h    BYTE    peripheral device type of target
  6050. ---functions 10h,13h---
  6051.  10h    DWORD    pointer to CCB to be aborted
  6052. ---function 20h---
  6053.  10h    WORD    engine number
  6054.  12h    BYTE    engine type
  6055.         00h buffer memory
  6056.         01h lossless compression
  6057.         02h lossy compression
  6058.         03h encryption
  6059.  13h    BYTE    engine algorithm ID
  6060.         00h vendor-unique
  6061.         01h LZ1 variation 1 (STAC)
  6062.         02h LZ2 variation 1 (HP DCZL)
  6063.         03h LZ2 variation 2 (Infochip)
  6064.  14h    DWORD    engine memory size
  6065. ---function 21h---
  6066.  10h    DWORD    pointer to peripheral driver
  6067.  14h  4 BYTEs    reserved
  6068.  18h    DWORD    OS-dependent request-mapping info
  6069.  1Ch    DWORD    address of completion callback routine
  6070.  20h    DWORD    pointer to scatter/gather list or data buffer
  6071.  24h    DWORD    length of data transfer
  6072.  28h    DWORD    pointer to engine buffer data
  6073.  2Ch  2 BYTEs    reserved
  6074.  2Eh    WORD    number of scatter/gather entries
  6075.  30h    DWORD    maximum destination data length
  6076.  34h    DWORD    length of destination data
  6077.  38h    DWORD    source residual length
  6078.  3Ch 12 BYTEs    reserved
  6079.  48h    DWORD    OS-dependent timeout value
  6080.  4Ch  4 BYTEs    reserved
  6081.  50h    WORD    engine number
  6082.  52h    WORD    vendor-unique flags
  6083.  54h  4 BYTEs    reserved
  6084.  58h  N BYTEs    private data area for SIM
  6085. ---function 30h---
  6086.  10h    WORD    group 6 vendor-unique CDB length
  6087.  12h    WORD    group 7 vendor-unique CDB length
  6088.  14h    DWORD    pointer to target CCB list
  6089.  18h    WORD    number of target CCBs
  6090. ---other functions---
  6091.  10h    DWORD    pointer to peripheral driver
  6092.  14h    DWORD    pointer to next CCB
  6093.  18h    DWORD    OS-dependent request mapping information
  6094.  1Ch    DWORD    address of completion callback routine
  6095.  20h    DWORD    pointer to scatter/gather list or data buffer
  6096.  24h    DWORD    length of data transfer
  6097.  28h    DWORD    pointer to sense info buffer
  6098.  2Ch    BYTE    length of sense info buffer
  6099.  2Dh    BYTE    CDB length
  6100.  2Eh    WORD    number of scatter/gather entries
  6101.  30h  4 BYTEs    reserved
  6102.  34h    BYTE    SCSI status
  6103.  35h  3 BYTEs    reserved
  6104.  38h    DWORD    residual length
  6105.  40h 12 BYTEs    Command Descriptor Block (CDB)
  6106.  44h    DWORD    OS-dependent timeout value
  6107.  48h    DWORD    pointer to message buffer
  6108.  4Ch    WORD    length of message buffer
  6109.  4Eh    WORD    vendor-unique flags
  6110.  50h    BYTE    tag queue action
  6111.  51h  3 BYTEs    reserved
  6112.  54h  N BYTEs    private data area for SIM
  6113.  
  6114. Values for CAM function code:
  6115.  00h NOP
  6116.  01h execute SCSI I/O
  6117.  02h get device type
  6118.  03h path inquiry
  6119.  04h release SIM queue
  6120.  05h set async callback
  6121.  06h set device type
  6122.  07h-0Fh reserved
  6123.  10h abort SCSI command
  6124.  11h reset SCSI bus
  6125.  12h reset SCSI device
  6126.  13h terminate I/O process
  6127.  14h-1Fh reserved
  6128.  20h engine inquiry
  6129.  21h execute engine request
  6130.  22h-2Fh reserved
  6131.  30h enable logical unit number
  6132.  31h execute target I/O
  6133.  32h-7Fh reserved
  6134.  80h-FFh vendor-specific functions
  6135.  
  6136. Values for CAM status:
  6137.  00h request in progress
  6138.  01h request successful
  6139.  02h host aborted request
  6140.  03h unable to abort request
  6141.  04h request completed with error
  6142.  05h CAM is busy
  6143.  06h invalid request
  6144.  07h invalid path ID
  6145.  08h no such SCSI device
  6146.  09h unable to terminate I/O process
  6147.  0Ah timeout on target selection
  6148.  0Bh timeout on command
  6149.  0Dh receive message rejection
  6150.  0Eh sent/received SCSI bus reset
  6151.  0Fh detected uncorrectable parity error
  6152.  10h Autosense request failed
  6153.  11h no HBA detected
  6154.  12h data over/underrun
  6155.  13h bus freed unexpectedly
  6156.  14h target bus phase sequence failure
  6157.  15h CCB too small
  6158.  16h requested capability not available
  6159.  17h sent bus device reset
  6160.  18h terminate I/O process
  6161.  38h invalid LUN
  6162.  39h invalid target ID
  6163.  3Ah unimplemented function
  6164.  3Bh nexus not established
  6165.  3Ch invalid initiator ID
  6166.  3Dh received SCSI Command Descriptor Block
  6167.  3Eh LUN already enabled
  6168.  3Fh SCSI bus busy
  6169. Note:    bit 6 set to indicate frozen SIM queue
  6170.     bit 7 set to indicate valid autosense
  6171.  
  6172. Completion callback function called with:
  6173.     interrupts disabled
  6174.     ES:BX -> completed CCB
  6175.  
  6176. Asynchronous callback function called with:
  6177.     AH = opcode
  6178.     AL = path ID generating callback
  6179.     DH = target ID causing event
  6180.     DL = LUN causing event
  6181.     CX = data byte count (if applicable)
  6182.     ES:BX -> data buffer (if applicable)
  6183. Return: all registers preserved
  6184. ----------4F8200CX8765-----------------------
  6185. INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
  6186.     AX = 8200h
  6187.     CX = 8765h
  6188.     DX = CBA9h
  6189. Return: AH = 00h if installed
  6190.         CX = 9ABCh
  6191.         DX = 5678h
  6192.         ES:DI -> "SCSI_CAM"
  6193. SeeAlso: AX=8100h,INT 4B"Common Access Method"
  6194. ----------50---------------------------------
  6195. INT 50 - TIL Xpert AIM (X.25)
  6196.     AH = function
  6197. ----------50---------------------------------
  6198. INT 50 - through 57 - IRQ0-IRQ7 relocated by DESQview
  6199. Notes:    this is the default location for older versions; DESQview v2.26+
  6200.       searches for unused ranges of interrupts and uses the lowest
  6201.       available range in its list for relocating these IRQs and the next
  6202.       lowest for relocating IRQ8-IRQ15
  6203.     a range of eight interrupts starting at a multiple of 8 is considered
  6204.       available if all vectors are identical and it has not been excluded
  6205.       with an /XB:nn commandline switch
  6206.     the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
  6207.       are available, F8h and then 50h are used anyway)
  6208.     the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
  6209.       are available, F8h and then F0h are used anyway)
  6210. SeeAlso: INT 58"DESQview"
  6211. ----------50---------------------------------
  6212. INT 50 - through 57 - IRQ0-IRQ7 relocated by IBM 3278 emulation control program
  6213. ----------50---------------------------------
  6214. INT 50 - through 57 - IRQ0-IRQ7 relocated by OS/2 v1.x
  6215. ----------53---------------------------------
  6216. INT 53 - ??? - API
  6217.     BX = function
  6218.         0000h ???
  6219.             AX = ???
  6220.         Return: AX = ???
  6221.         0004h ???
  6222.         0009h ???
  6223.         0015h
  6224.             AX = ???
  6225.         DX = ???
  6226.         0017h
  6227. Return: ???
  6228. Notes:    the installation check consists of looking for the signature "WEBCO"
  6229.       immediately prior to the interrupt handler
  6230.     the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  6231. ----------58---------------------------------
  6232. INT 58 - IRQ8 relocated by DESQview 2.26+
  6233. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6234. SeeAlso: INT 50"DESQview",INT 70
  6235. ----------58---------------------------------
  6236. INT 58 - IRQ0 relocated by DoubleDOS
  6237. SeeAlso: INT 08
  6238. ----------59---------------------------------
  6239. INT 59 - IRQ9 relocated by DESQview 2.26+
  6240. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6241. SeeAlso: INT 50"DESQview",INT 71
  6242. ----------59---------------------------------
  6243. INT 59 - IRQ1 relocated by DoubleDOS
  6244. SeeAlso: INT 09
  6245. ----------59---------------------------------
  6246. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  6247.     DS:DX -> block of 5 array pointers
  6248. Return:    CF set on error
  6249.         AX = error code
  6250.     CF clear if successful
  6251.         AX = return code
  6252. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  6253.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  6254.     also used by the IBM Graphic Development Toolkit
  6255. ----------5A---------------------------------
  6256. INT 5A - IRQ10 relocated by DESQview 2.26+
  6257. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6258. SeeAlso: INT 50"DESQview",INT 72
  6259. ----------5A---------------------------------
  6260. INT 5A - IRQ2 relocated by DoubleDOS
  6261. SeeAlso: INT 0A
  6262. ----------5A---------------------------------
  6263. INT 5A - Cluster adapter BIOS entry address
  6264.     ???
  6265. ----------5B---------------------------------
  6266. INT 5B - IRQ11 relocated by DESQview 2.26+
  6267. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6268. SeeAlso: INT50"DESQview",INT 73
  6269. ----------5B---------------------------------
  6270. INT 5B - IRQ3 relocated by DoubleDOS
  6271. SeeAlso: INT 0B
  6272. ----------5B---------------------------------
  6273. INT 5B - Used by cluster adapter
  6274. ----------5B---------------------------------
  6275. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  6276.     ES:BX -> Network Control Block (see below)
  6277. Return: AL = status (see INT 5C)
  6278. SeeAlso: INT 5C
  6279.  
  6280. Format of Network Control Block
  6281. Offset    Size    Description
  6282.  00h    BYTE    ncb_command (see below)
  6283.  01h    BYTE    ncb_retcode
  6284.  02h    BYTE    ncb_lsn
  6285.  03h    BYTE    ncb_num
  6286.  04h    DWORD    -> ncb_buffer
  6287.  08h    WORD    ncb_length
  6288.  0Ah 16 BYTEs    ncb_callname
  6289.  1Ah 16 BYTEs    ncb_name
  6290.  2Ah    BYTE    ncb_rto
  6291.  2Bh    BYTE    ncb_sto
  6292.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  6293.  30h    BYTE    ncb_lana_num
  6294.  31h    BYTE    ncb_cmd_cplt
  6295.  32h    DWORD    -> ncb_vname
  6296.  36h    BYTE    ncb_vnamelen
  6297.  37h  9 BYTEs    ncb_reserve
  6298. Note: fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
  6299.  
  6300. Values for ncb_command field same as for INT 5C, except
  6301.     70h    send net Break
  6302. ----------5B---------------------------------
  6303. INT 5B - Microsoft Network Transport Layer Interface
  6304. Note:    used by MS-NET for executing network commands
  6305. SeeAlso: INT 5C"NetBIOS"
  6306. ----------5B---------------------------------
  6307. INT 5B - used by Alloy NTNX
  6308. ----------5B---------------------------------
  6309. INT 5B - ISOLAN Multi Protocol Software
  6310.     ES:BX -> Transfer Control Block
  6311. Return: AL - status
  6312. Note:    this software interface allows multiple protocols/software packages
  6313.       to access a BICC 411x network card
  6314.  
  6315. Format of Transfer Control Block:
  6316. Offset    Type    Description
  6317.  00h    BYTE    command code
  6318.         B3h Status
  6319.         F2h Activate
  6320.         F3h Deactivate
  6321.         F4h Send Data
  6322.  01h    BYTE    command identity
  6323.  02h    BYTE    virtual circuit ID
  6324.  03h    WORD    buffer length
  6325.  05h    DWORD    buffer pointer
  6326.  09h    BYTE    expedited data flag
  6327.  0Ah    BYTE    cancelable flag
  6328.  0Bh 16 BYTEs    local network address
  6329.  1Bh 16 BYTEs    remote network address
  6330.  2Bh    DWORD    asynchronous notification routine
  6331.  30h    DWORD    local network number
  6332.  34h    DWORD    remote network number
  6333.  38h    BYTE    call timeout
  6334.  39h    BYTE    not used
  6335.  3Ah  8 BYTEs    reserved
  6336.  42h    BYTE    command code extension
  6337.  43h    WORD    Blue Book MAC type
  6338. ----------5C---------------------------------
  6339. INT 5C - IRQ12 relocated by DESQview 2.26+
  6340. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6341. SeeAlso: INT 50"DESQview",INT 74
  6342. ----------5C---------------------------------
  6343. INT 5C - IRQ4 relocated by DoubleDOS
  6344. SeeAlso: INT 0C
  6345. ----------5C---------------------------------
  6346. INT 5C - NetBIOS INTERFACE
  6347.     ES:BX -> network control block (NCB) (see below)
  6348. Return: AL = status
  6349.         00h successful
  6350.         01h bad buffer size
  6351.         03h invalid NETBIOS command
  6352.         05h timeout
  6353.         06h receive buffer too small
  6354.         07h No-ACK command failed
  6355.         08h bad session number
  6356.         09h LAN card out of memory
  6357.         0Ah session closed
  6358.         0Bh command has been cancelled
  6359.         0Dh name already exists
  6360.         0Eh local name table full
  6361.         0Fh name still in use, can't delete
  6362.         11h local session table full
  6363.         12h remote PC not listening
  6364.         13h bad NCB_NUM field
  6365.         14h no answer to CALL or no such remote
  6366.         15h name not in local name table
  6367.         16h duplicate name
  6368.         17h bad delete
  6369.         18h abnormal end
  6370.         19h name error, multiple identical names in use
  6371.         1Ah bad packet
  6372.         21h network card busy
  6373.         22h too many commands queued
  6374.         23h bad LAN card number
  6375.         24h command finished while cancelling
  6376.         26h command can't be cancelled
  6377.         30h name defined by another process (OS/2)
  6378.         34h NetBIOS environment not defined, must issue reset (OS/2)
  6379.         35h required operating system resources exhausted (OS/2)
  6380.         36h maximum applications exceeded (OS/2)
  6381.         37h no SAPs available for NetBIOS (OS/2)
  6382.         38h requested resources not available (OS/2)
  6383.         40h Lana System Error
  6384.         41h Lana Remote Hot Carrier
  6385.         42h Lana Local Hot Carrier
  6386.         43h Lana No Carrier Detected
  6387.         44h unusual network condition
  6388.         45h-4Fh hardware error
  6389.         50h adapter malfunction
  6390.         FFh NetBIOS busy (command pending)
  6391. Note:    Sytek PCnet card uses DMA 3.
  6392. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
  6393.  
  6394. Format of Network Control Block:
  6395. Offset    Size    Description
  6396.  00h    BYTE    command code (see below)
  6397.  01h    BYTE    return code
  6398.  02h    BYTE    local session number (LSN)
  6399.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  6400.  04h    DWORD    -> I/O buffer
  6401.  08h    WORD    length of data in buffer
  6402.  0Ah 16 BYTEs    remote system to call
  6403.  1Ah 16 BYTEs    network name of local machine
  6404.  2Ah    BYTE    receive timeout in 1/2 seconds
  6405.  2Bh    BYTE    send timeout in 1/2 seconds
  6406.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  6407.  30h    BYTE    network adapter number on which to execute command
  6408.         00h-03h IBM NetBIOS specs
  6409.         F0h-FFh Eicon NABios interface
  6410.  31h    BYTE    command completion code (see returned status above)
  6411.  32h 14 BYTEs    reserved for network card
  6412.  
  6413. Values for command code field in NCB (or with 80h for non-waiting call):
  6414.     10h start session with NCB_NAME name (call)
  6415.     11h listen for call
  6416.     12h end session with NCB_NAME name (hangup)
  6417.     14h send data via NCB_LSN
  6418.     15h receive data from a session
  6419.     16h receive data from any session
  6420.     17h send multiple data buffers
  6421.     20h send unACKed message (datagram)
  6422.     21h receive datagram
  6423.     22h send broadcast datagram
  6424.     23h receive broadcast datagram
  6425.     30h add name to name table
  6426.     31h delete name from name table
  6427.     32h reset adapter card and tables
  6428.     33h get adapter status (see structure "astatus" below)
  6429.     34h status of all sessions for name (see structure "sstatus" below)
  6430.     35h cancel
  6431.     36h add group name to name table
  6432.     70h unlink from IBM remote program (no F0h function)
  6433.     71h send data without ACK
  6434.     72h send multiple buffers without ACK
  6435.     72h UngermannBass Register (conflicts with above function)
  6436.     73h UngermannBass SendNmc
  6437.     74h UngermannBass Callniu
  6438.     75h UngermannBass Calladdr
  6439.     76h UngermannBass Listenaddr
  6440.     77h UngermannBass SendPkt
  6441.     78h find name
  6442.     78h UngermannBass RcvPkt (conflicts with above function)
  6443.     79h token-ring protocol trace
  6444.     79h UngermannBass SendAttn (conflicts with above function)
  6445.     7Ah UngermannBass RcvAttn
  6446.     7Bh UngermannBass Listenniu
  6447.     7Ch UngermannBass RcvRaw
  6448.     7Dh UngermannBass SendNmc2
  6449.  
  6450. Format of structure "name":
  6451. Offset    Size    Description
  6452.  00h 16 BYTEs "nm_name" symbolic name
  6453.  10h    BYTE  "nm_num" number associated with name
  6454.  11h    BYTE  nm_status
  6455.  
  6456. Format of structure "astatus":
  6457. Offset    Size    Description
  6458.  00h  6 BYTEs as_id
  6459.  06h    BYTE  as_jumpers
  6460.  07h    BYTE  as_post
  6461.  08h    BYTE  as_major
  6462.  09h    BYTE  as_minor
  6463.  0Ah    WORD  as_interval
  6464.  0Ch    WORD  as_crcerr
  6465.  0Eh    WORD  as_algerr
  6466.  10h    WORD  as_colerr
  6467.  12h    WORD  as_abterr
  6468.  14h    DWORD as_tcount
  6469.  18h    DWORD as_rcount
  6470.  1Ch    WORD  as_retran
  6471.  1Eh    WORD  as_xresrc
  6472.  20h  8 BYTEs as_res0
  6473.  28h    WORD  as_ncbfree
  6474.  2Ah    WORD  as_ncbmax
  6475.  2Ch    WORD  as_ncbx
  6476.  2Eh  4 BYTEs as_res1
  6477.  32h    WORD  as_sespend
  6478.  34h    WORD  as_msp
  6479.  36h    WORD  as_sesmax
  6480.  38h    WORD  as_bufsize
  6481.  3Ah    WORD  as_names
  6482.  3Ch 16 name structures     as_name
  6483.  
  6484. Format of structure "sstatus":
  6485. Offset    Size    Description
  6486.  00h    BYTE    number of sessions being reported
  6487.  01h    BYTE    number of sessions with this name
  6488.  02h    BYTE    number of outstanding receive datagrams
  6489.  03h    BYTE    number of outstanding ReceiveAnys
  6490.  04h    var    session structures (see below)
  6491.  
  6492. Format of structure "session":
  6493. Offset    Size    Description
  6494.  00h    BYTE    local session number
  6495.  01h    BYTE    state
  6496.         01h listen pending
  6497.         02h call pending
  6498.         03h session established
  6499.         04h hangup pending
  6500.         05h hangup done
  6501.         06h session aborted
  6502.  02h 16 BYTEs    local name
  6503.  12h 16 BYTEs    remote name
  6504.  22h    BYTE    number of outstanding receives
  6505.  23h    BYTE    number of outstanding sends/chainsends
  6506. ----------5C---------------------------------
  6507. INT 5C - TOPS INTERFACE
  6508.     ES:BX -> Network Control Block
  6509. Note:    TOPS card uses DMA 1, 3 or none.
  6510. ----------5C---------------------------------
  6511. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  6512.     DX:BX -> control block (see below)
  6513. Return: none
  6514. Notes:    this driver can use any interrupt from 5Ch to 70h
  6515.     the signature 'AppleTalk' appears 16 bytes prior to the interrupt
  6516.       handler; this serves as the installation check
  6517.  
  6518. Format of AppleTalk control block:
  6519. Offset    Size    Description
  6520.  00h    WORD    command code
  6521.         01h "AT_INIT"        initialize the driver
  6522.         02h "AT_KILL"
  6523.         03h "AT_GETNETINFO" get current network info incl init status
  6524.         04h "AT_GETCLOCKTICKS"
  6525.         05h "AT_STARTTIMER"
  6526.         06h "AT_RESETTIMER"
  6527.         07h "AT_CANCELTIMER"
  6528.         10h "LAP_INSTALL"
  6529.         11h "LAP_REMOVE"
  6530.         12h "LAP_WRITE"
  6531.         13h "LAP_READ"
  6532.         14h "LAP_CANCEL"
  6533.         20h "DDP_OPENSOCKET"
  6534.         21h "DDP_CLOSESOCKET"
  6535.         22h "DDP_WRITE"
  6536.         23h "DDP_READ"
  6537.         24h "DDP_CANCEL"
  6538.         30h "NBP_REGISTER"
  6539.         31h "NBP_REMOVE"
  6540.         32h "NBP_LOOKUP"
  6541.         33h "NBP_CONFIRM"
  6542.         34h "NBP_CANCEL"
  6543.         35h "ZIP_GETZONELIST"
  6544.         36h "ZIP_GETMYZONE"
  6545.         37h "ZIP_TAKEDOWN"
  6546.         38h "ZIP_BRINGUP"
  6547.         40h "ATP_OPENSOCKET"
  6548.         41h "ATP_CLOSESOCKET"
  6549.         42h "ATP_SENDREQUEST"
  6550.         43h "ATP_GETREQUEST"
  6551.         44h "ATP_SENDRESPONSE"
  6552.         45h "ATP_ADDRESPONSE"
  6553.         46h "ATP_CANCELTRANS"
  6554.         47h "ATP_CANCELRESPONSE"
  6555.         48h "ATP_CANCELREQUEST"
  6556.         50h "ASP_GETPARMS"
  6557.         51h "ASP_CLOSESESSION"
  6558.         52h "ASP_CANCEL"
  6559.         53h "ASP_INIT"
  6560.         54h "ASP_KILL"
  6561.         55h "ASP_GETSESSION"
  6562.         56h "ASP_GETREQUEST"
  6563.         57h "ASP_CMDREPLY"
  6564.         58h "ASP_WRTCONTINUE"
  6565.         59h "ASP_WRTREPLY"
  6566.         5Ah "ASP_CLOSEREPLY"
  6567.         5Bh "ASP_NEWSTATUS"
  6568.         5Ch "ASP_ATTENTION"
  6569.         5Dh "ASP_GETSTATUS"
  6570.         5Eh "ASP_OPENSESSION"
  6571.         5Fh "ASP_COMMAND"
  6572.         60h "ASP_WRITE"
  6573.         61h "ASP_GETATTENTION"
  6574.         70h "PAP_OPEN"
  6575.         71h "PAP_CLOSE"
  6576.         72h "PAP_READ"
  6577.         73h "PAP_WRITE"
  6578.         74h "PAP_STATUS"
  6579.         75h "PAP_REGNAME"
  6580.         76h "PAP_REMNAME"
  6581.         77h "PAP_INIT"
  6582.         78h "PAP_NEWSTATUS"
  6583.         79h "PAP_GETNEXTJOB"
  6584.         7Ah "PAP_KILL"
  6585.         7Bh "PAP_CANCEL"
  6586.         
  6587.         or with the following flags
  6588.         8000h start command then return
  6589.         4000h wait for interrupt service to complete
  6590.  02h    WORD    returned status
  6591.         0000h success (already initialized if func 01h)
  6592.  04h    DWORD    pointer to completion function
  6593.  08h    WORD    network number
  6594.  0Ah    BYTE    node ID
  6595. ---if general func (01h,03h), control block continues:
  6596.  0Bh    BYTE    "inf_abridge"
  6597.  0Ch    WORD    "inf_config"
  6598.  0Eh    DWORD    pointer to buffer
  6599.  12h    WORD    buffer size
  6600. ---if DDP function (20h-24h), control block continues:
  6601.  0Bh    BYTE    "ddp_addr_socket"
  6602.  0Ch    BYTE    "ddp_socket"
  6603.  0Dh    BYTE    "ddp_type"
  6604.  0Eh    DWORD    pointer to buffer
  6605.  12h    WORD    buffer size
  6606.  14h    BYTE    "ddp_chksum"
  6607. ---if Name Binding Protocol (30h-34h), control block continues:
  6608.  0Bh    BYTE    "nbp_addr_socket"
  6609.  0Ch    WORD    "nbp_toget"
  6610.  0Eh    DWORD    pointer to buffer
  6611.  12h    WORD    buffer size
  6612.  14h    BYTE    "nbp_interval"
  6613.  15h    BYTE    "nbp_retry"
  6614.  16h    DWORD    "nbp_entptr"
  6615. ---if AppleTalk Transaction Protocol (42h), control block continues:
  6616.  0Bh    BYTE    "atp_addr_socket"
  6617.  0Ch    WORD    "atp_socket"
  6618.  0Eh    DWORD    pointer to buffer
  6619.  12h    WORD    buffer size
  6620.  14h    BYTE    "atp_interval"
  6621.  15h    BYTE    "atp_retry"
  6622.  16h    BYTE    ATP flags
  6623.         bit 5: exactly one transaction
  6624.  17h    BYTE    "atp_seqbit"
  6625.  18h    BYTE    transaction ID
  6626.  19h  4 BYTEs    ATP user bytes
  6627.  1Dh    BYTE    number of BDS buffers
  6628.  1Eh    BYTE    number of BDS responses
  6629.  1Fh    DWORD    pointer to BDS buffers (see below)
  6630.  
  6631. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  6632. Offset    Size    Description
  6633.  00h    WORD    "tup_address_network"
  6634.  02h    BYTE    "tup_address_notid"
  6635.  03h    BYTE    "tup_address_socket"
  6636.  04h    BYTE    "tup_enum"
  6637.  05h 99 BYTEs    name
  6638.  
  6639. Format of BDS entries:
  6640. Offset    Size    Description
  6641.  00h    DWORD    pointer to buffer
  6642.  04h    WORD    size of buffer
  6643.  06h    WORD    BDS data size
  6644.  08h  4 BYTEs    "bds_userbytes"
  6645. ----------5C---------------------------------
  6646. INT 5C - IBM 802.2 INTERFACE (LLC)
  6647.     ES:BX -> CCB
  6648. Return: none
  6649.  
  6650. Format of CCB:
  6651. Offset    Size    Description
  6652.  00h    BYTE    adapter
  6653.  01h    BYTE    command code
  6654.  02h    BYTE    return code
  6655.  03h    BYTE    work
  6656.  04h    DWORD    pointer to ???
  6657.  08h    DWORD    pointer to completion function???
  6658.  0Ch    DWORD    pointer to parameters???
  6659. ----------5C---------------------------------
  6660. INT 5C - $25 LAN - INSTALLATION CHECK
  6661. Notes:    current versions only check whether the vector is 0000h:0000h or not
  6662.     future versions are supposed to have the signature "NET" in the three
  6663.       bytes preceding the INT 5C handler
  6664. ----------5C04-------------------------------
  6665. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  6666.     AH = 04h
  6667.     AL = COM port (0 = default)
  6668.     CX = wait count in character times (should be at least 100)
  6669. Return: ZF set if link alive
  6670. ----------5D---------------------------------
  6671. INT 5D - IRQ13 relocated by DESQview 2.26+
  6672. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6673. SeeAlso: INT 50"DESQview",INT 75
  6674. ----------5D---------------------------------
  6675. INT 5D - IRQ5 relocated by DoubleDOS
  6676. SeeAlso: INT 0D,INT 5C"DoubleDOS"
  6677. ----------5E---------------------------------
  6678. INT 5E - IRQ14 relocated by DESQview 2.26+
  6679. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6680. SeeAlso: INT 50"DESQview",INT 76
  6681. ----------5E---------------------------------
  6682. INT 5E - IRQ6 relocated by DoubleDOS
  6683. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  6684. ----------5F---------------------------------
  6685. INT 5F - IRQ15 relocated by DESQview 2.26+
  6686. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6687. SeeAlso: INT 50"DESQview",INT 77
  6688. ----------5F---------------------------------
  6689. INT 5F - IRQ7 relocated by DoubleDOS
  6690. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  6691. ----------5F00-------------------------------
  6692. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  6693.     AH = 00h
  6694.     AL = video mode
  6695.         07h text, system manager compliant
  6696.         20h 240x128 mono graphics, system manager compliant
  6697.         87h text, not system manager compliant
  6698.         A0h 240x128 mono graphics, not system manager compliant
  6699. Note:    the defaults after setting the mode to graphics are (0,0) logical
  6700.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  6701.       pixel replacement FORCE, line type and fill mask all bits set
  6702. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h
  6703. ----------5F01-------------------------------
  6704. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
  6705.     AH = 01h
  6706.     ES:DI -> 8-byte fill mask
  6707. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  6708.       when drawing filled rectangles; it is always aligned with the byte
  6709.       boundaries of video memory, regardless of the actual boundaries of
  6710.       the rectangle
  6711. SeeAlso: AH=02h
  6712. ----------5F02-------------------------------
  6713. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
  6714.     AH = 02h
  6715.     ES:DI -> graphics info record (see below)
  6716. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  6717. Format of graphics info record:
  6718. Offset    Size    Description
  6719.  00h    BYTE    current video mode
  6720.  01h    BYTE    default video mode
  6721.  02h    WORD    display width in pixels
  6722.  04h    WORD    display height in pixels
  6723.  06h    WORD    current pen column
  6724.  08h    WORD    current pen row
  6725.  0Ah    WORD    current line type
  6726.  0Ch    WORD    current replacement rule
  6727.  0Eh    WORD    current pen color
  6728.  10h    WORD    current leftmost column of clip region
  6729.  12h    WORD    current rightmost column of clip region
  6730.  14h    WORD    current topmost row of clip region
  6731.  16h    WORD    current bottommost row of clip region
  6732.  18h    WORD    current column of logical origin
  6733.  1Ah    WORD    current row of logical origin
  6734.  1Ch  8 BYTEs    current fill mask
  6735. ----------5F03-------------------------------
  6736. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  6737.     AH = 03h
  6738.     CX = column
  6739.     DX = row
  6740. SeeAlso: AH=04h
  6741. ----------5F04-------------------------------
  6742. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
  6743.     AH = 04h
  6744.     CX = left-most column
  6745.     DX = top-most row
  6746.     SI = right-most column
  6747.     DI = bottom-most row
  6748. SeeAlso: AH=03h
  6749. ----------5F05-------------------------------
  6750. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  6751.     AH = 05h
  6752.     AL = fill type
  6753.         00h outline, using current line type and color
  6754.         01h solid, using current color
  6755.         02h pattern, using current fill mask and color
  6756.     DX,CX = row,column of other corner of rectangle
  6757. Note:    the rectangle is drawn starting at the current pen position
  6758. SeeAlso: AH=01h,AH=06h,AH=07h
  6759. ----------5F06-------------------------------
  6760. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
  6761.     AH = 06h
  6762.     DX,CX = row,column of end point
  6763. Note:    the line is drawn starting at the current pen position
  6764. SeeAlso: AH=05h,AH=07h
  6765. ----------5F07-------------------------------
  6766. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
  6767.     AH = 07h
  6768.     DX,CX = row,column of point
  6769. Note:    also sets pen position to the specified point
  6770. SeeAlso: AH=06h,AH=08h,AH=0Ch
  6771. ----------5F08-------------------------------
  6772. INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
  6773.     AH = 08h
  6774.     DX,CX = row,column of new pen position
  6775. SeeAlso: AH=07h,AH=09h
  6776. ----------5F09-------------------------------
  6777. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
  6778.     AH = 09h
  6779.     AL = new color (00h = white, 01h = black)
  6780. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  6781. ----------5F0A-------------------------------
  6782. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  6783.     AH = 0Ah
  6784.     AL = new replacement rule
  6785.         00h force
  6786.         01h AND
  6787.         02h OR
  6788.         03h XOR
  6789. SeeAlso: AH=01h,AH=09h,AH=0Bh
  6790. ----------5F0B-------------------------------
  6791. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
  6792.     AH = 0Bh
  6793.     CX = new line type
  6794. Note:    the line type specifies 16 bits which are repeated over and over while
  6795.       drawing the pixels of a line
  6796. SeeAlso: AH=09h,AH=0Ah
  6797. ----------5F0C-------------------------------
  6798. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
  6799.     AH = 0Ch
  6800.     DX,CX = row,column of pixel to read
  6801. Return: AX = pixel color
  6802. SeeAlso: AH=07h
  6803. ----------5F0D-------------------------------
  6804. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
  6805.     AH = 0Dh
  6806.     DX,CX = row,column of first corner
  6807.     BP,SI = row,column of second corner
  6808.     ES:DI -> image buffer (see below)
  6809. Note:    the specified corners are included in the saved image
  6810. SeeAlso: AH=0Eh
  6811.  
  6812. Format of image buffer:
  6813. Offset    Size    Description
  6814.  00h    WORD    number of planes (always 01h on HP 95LX)
  6815.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  6816.  04h    WORD    image width in pixels
  6817.  06h    WORD    image height in pixels
  6818.  08h  N BYTEs    image data
  6819.         requires (WIDTH+7)/8 * HEIGHT bytes
  6820. ----------5F0E-------------------------------
  6821. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
  6822.     AH = 0Eh
  6823.     AL = replacement rule
  6824.         bit 2: invert image before applying rule
  6825.         bits 1-0:  00 force
  6826.                01 AND
  6827.                10 OR
  6828.                11 XOR
  6829.     DX,CX = row,column of top left corner
  6830.     ES:DI -> image buffer (see AH=0Dh)
  6831. Note:    if the specified image does not fit completely on the screen, this call
  6832.       does nothing
  6833. SeeAlso: AH=0Dh
  6834. ----------5F0F-------------------------------
  6835. INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
  6836.     AH = 0Fh
  6837.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  6838.     DX,CX = row,column of first character's top left corner
  6839.     ES:DI -> ASCIZ text
  6840. ---------------------------------------------
  6841.